@Override public String getExportIdentifier() { return StringHelper.qualify( getTable().getExportIdentifier(), "UK-" + getName() ); } }
@Override public String getAlterTableToDropUniqueKeyCommand(UniqueKey uniqueKey, Metadata metadata) { final JdbcEnvironment jdbcEnvironment = metadata.getDatabase().getJdbcEnvironment(); final String tableName = jdbcEnvironment.getQualifiedObjectNameFormatter().format( uniqueKey.getTable().getQualifiedTableName(), dialect ); final StringBuilder buf = new StringBuilder( dialect.getAlterTableString(tableName) ); buf.append( getDropUnique() ); if ( dialect.supportsIfExistsBeforeConstraintName() ) { buf.append( "if exists " ); } buf.append( dialect.quote( uniqueKey.getName() ) ); if ( dialect.supportsIfExistsAfterConstraintName() ) { buf.append( " if exists" ); } return buf.toString(); }
@Override public String getAlterTableToAddUniqueKeyCommand(UniqueKey uniqueKey, Metadata metadata) { if ( hasNullable( uniqueKey ) ) { return org.hibernate.mapping.Index.buildSqlCreateIndexString( dialect, uniqueKey.getName(), uniqueKey.getTable(), uniqueKey.columnIterator(), uniqueKey.getColumnOrderMap(), true, metadata ); } else { return super.getAlterTableToAddUniqueKeyCommand( uniqueKey, metadata ); } }
@Override public String getAlterTableToAddUniqueKeyCommand(UniqueKey uniqueKey, Metadata metadata) { final JdbcEnvironment jdbcEnvironment = metadata.getDatabase().getJdbcEnvironment(); final String tableName = jdbcEnvironment.getQualifiedObjectNameFormatter().format( uniqueKey.getTable().getQualifiedTableName(), dialect ); final String constraintName = dialect.quote( uniqueKey.getName() ); return dialect.getAlterTableString( tableName ) + " add constraint " + constraintName + " " + uniqueConstraintSql( uniqueKey ); }
@Override public String getAlterTableToAddUniqueKeyCommand(UniqueKey uniqueKey, Metadata metadata) { // Do this here, rather than allowing UniqueKey/Constraint to do it. // We need full, simplified control over whether or not it happens. final String tableName = metadata.getDatabase().getJdbcEnvironment().getQualifiedObjectNameFormatter().format( uniqueKey.getTable().getQualifiedTableName(), metadata.getDatabase().getJdbcEnvironment().getDialect() ); final String constraintName = dialect.quote( uniqueKey.getName() ); return dialect.getAlterTableString( tableName ) + " add constraint " + uniqueConstraintSql( uniqueKey ) + " constraint " + constraintName; }
@Override public String getAlterTableToDropUniqueKeyCommand(UniqueKey uniqueKey, Metadata metadata) { if ( hasNullable( uniqueKey ) ) { return org.hibernate.mapping.Index.buildSqlDropIndexString( uniqueKey.getName(), metadata.getDatabase().getJdbcEnvironment().getQualifiedObjectNameFormatter().format( uniqueKey.getTable().getQualifiedTableName(), metadata.getDatabase().getJdbcEnvironment().getDialect() ) ); } else { return super.getAlterTableToDropUniqueKeyCommand( uniqueKey, metadata ); } }
@Test public void testTableIndex() { PersistentClass entity = metadata().getEntityBinding( Car.class.getName() ); Iterator itr = entity.getTable().getUniqueKeyIterator(); assertTrue( itr.hasNext() ); UniqueKey uk = (UniqueKey) itr.next(); assertFalse( itr.hasNext() ); assertTrue( StringHelper.isNotEmpty( uk.getName() ) ); assertEquals( 2, uk.getColumnSpan() ); Column column = (Column) uk.getColumns().get( 0 ); assertEquals( "brand", column.getName() ); column = (Column) uk.getColumns().get( 1 ); assertEquals( "producer", column.getName() ); assertSame( entity.getTable(), uk.getTable() ); itr = entity.getTable().getIndexIterator(); assertTrue( itr.hasNext() ); Index index = (Index)itr.next(); assertFalse( itr.hasNext() ); assertEquals( "Car_idx", index.getName() ); assertEquals( 1, index.getColumnSpan() ); column = index.getColumnIterator().next(); assertEquals( "since", column.getName() ); assertSame( entity.getTable(), index.getTable() ); }
protected void setGeneratedUniqueName(UniqueKey uk) { StringBuilder sb = new StringBuilder(uk.getTable().getName()).append('_'); for (Object col : uk.getColumns()) { sb.append(((Column) col).getName()).append('_'); } MessageDigest md; try { md = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } try { md.update(sb.toString().getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } String name = "UK" + new BigInteger(1, md.digest()).toString(16); if (name.length() > 30) { // Oracle has a 30-char limit name = name.substring(0, 30); } uk.setName(name); }
@Override public String sqlDropString(Dialect dialect, String defaultCatalog, String defaultSchema) { if ( dialect.supportsUniqueConstraintInCreateAlterTable() ) { return super.sqlDropString( dialect, defaultCatalog, defaultSchema ); } else { return Index.buildSqlDropIndexString( dialect, getTable(), getName(), defaultCatalog, defaultSchema ); } }
public String sqlDropString(Dialect dialect, String defaultCatalog, String defaultSchema) { if( dialect.supportsUniqueConstraintInCreateAlterTable() ) { return super.sqlDropString(dialect, defaultCatalog, defaultSchema); } else { return Index.buildSqlDropIndexString(dialect, getTable(), getName(), defaultCatalog, defaultSchema); } }
public String sqlCreateString(Dialect dialect, Mapping p, String defaultCatalog, String defaultSchema) { if ( dialect.supportsUniqueConstraintInCreateAlterTable() ) { return super.sqlCreateString( dialect, p, defaultCatalog, defaultSchema ); } else { return Index.buildSqlCreateIndexString( dialect, getName(), getTable(), getColumnIterator(), true, defaultCatalog, defaultSchema ); } }
@Override public String sqlDropString(Dialect dialect, String defaultCatalog, String defaultSchema) { if ( dialect.supportsUniqueConstraintInCreateAlterTable() ) { return super.sqlDropString( dialect, defaultCatalog, defaultSchema ); } else { return Index.buildSqlDropIndexString( dialect, getTable(), getName(), defaultCatalog, defaultSchema ); } }
public String sqlCreateString(Dialect dialect, Mapping p, String defaultCatalog, String defaultSchema) { if ( dialect.supportsUniqueConstraintInCreateAlterTable() ) { return super.sqlCreateString(dialect, p, defaultCatalog, defaultSchema); } else { return Index.buildSqlCreateIndexString(dialect, getName(), getTable(), getColumnIterator(), true, defaultCatalog, defaultSchema); } }
@Override public String sqlCreateString(Dialect dialect, Mapping p, String defaultCatalog, String defaultSchema) { if ( dialect.supportsUniqueConstraintInCreateAlterTable() ) { return super.sqlCreateString( dialect, p, defaultCatalog, defaultSchema ); } else { return Index.buildSqlCreateIndexString( dialect, getName(), getTable(), getColumnIterator(), true, defaultCatalog, defaultSchema ); } }
@Override public String sqlCreateString(Dialect dialect, Mapping p, String defaultCatalog, String defaultSchema) { if ( dialect.supportsUniqueConstraintInCreateAlterTable() ) { return super.sqlCreateString( dialect, p, defaultCatalog, defaultSchema ); } else { return Index.buildSqlCreateIndexString( dialect, getName(), getTable(), getColumnIterator(), true, defaultCatalog, defaultSchema ); } }
/** * Constructor used for {@link UniqueKey}s. */ public MongoDBIndexSpec(UniqueKey uniqueKey, Document options) { this.indexType = determineIndexType( options ); this.options = prepareOptions( this.indexType, options, uniqueKey.getName(), true ); this.collection = uniqueKey.getTable().getName(); this.indexName = uniqueKey.getName(); this.addIndexKeys( uniqueKey.getColumnIterator(), uniqueKey.getColumnOrderMap() ); }
/** * Constructor used for {@link UniqueKey}s. */ public MongoDBIndexSpec(UniqueKey uniqueKey, Document options) { this.indexType = determineIndexType( options ); this.options = prepareOptions( this.indexType, options, uniqueKey.getName(), true ); this.collection = uniqueKey.getTable().getName(); this.indexName = uniqueKey.getName(); this.addIndexKeys( uniqueKey.getColumnIterator(), uniqueKey.getColumnOrderMap() ); }