@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 @TestForIssue( jiraKey = "HHH-8026" ) public void testUnNamedConstraints() { StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); try { final Metadata metadata = new MetadataSources( ssr ) .addAnnotatedClass( UniqueNoNameA.class ) .addAnnotatedClass( UniqueNoNameB.class ) .buildMetadata(); org.hibernate.mapping.Table tableA = null; org.hibernate.mapping.Table tableB = null; for ( org.hibernate.mapping.Table table : metadata.collectTableMappings() ) { if ( table.getName().equals( "UniqueNoNameA" ) ) { tableA = table; } else if ( table.getName().equals( "UniqueNoNameB" ) ) { tableB = table; } } assertTrue( "Could not find the expected tables.", tableA != null && tableB != null ); assertFalse( tableA.getUniqueKeyIterator().next().getName().equals( tableB.getUniqueKeyIterator().next().getName() ) ); } finally { StandardServiceRegistryBuilder.destroy( ssr ); } }
@Test public void testWithCustomNamingStrategy() throws Exception { Metadata metadata = new MetadataSources( serviceRegistry ) .addAnnotatedClass(Address.class) .addAnnotatedClass(Person.class) .getMetadataBuilder() .applyImplicitNamingStrategy( new LongIdentifierNamingStrategy() ) .build(); UniqueKey uniqueKey = metadata.getEntityBinding( Address.class.getName()).getTable().getUniqueKeyIterator().next(); assertEquals( expectedUniqueKeyName(), uniqueKey.getName() ); org.hibernate.mapping.ForeignKey foreignKey = (org.hibernate.mapping.ForeignKey) metadata.getEntityBinding( Address.class.getName()).getTable().getForeignKeyIterator().next(); assertEquals( expectedForeignKeyName(), foreignKey.getName() ); org.hibernate.mapping.Index index = metadata.getEntityBinding( Address.class.getName()).getTable().getIndexIterator().next(); assertEquals( expectedIndexName(), index.getName() ); }
@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() ); }
public UniqueKey addUniqueKey(UniqueKey uniqueKey) { UniqueKey current = (UniqueKey) uniqueKeys.get( uniqueKey.getName() ); if ( current != null ) { throw new MappingException( "UniqueKey " + uniqueKey.getName() + " already exists!" ); } uniqueKeys.put( uniqueKey.getName(), uniqueKey ); return uniqueKey; }
/** * 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() ); }
@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 ); } }