private void handleIdentifierValueBinding( KeyValue identifierValueBinding, Dialect dialect, String defaultCatalog, String defaultSchema, RootClass entityBinding) { // todo : store this result (back into the entity or into the KeyValue, maybe?) // This process of instantiating the id-generator is called multiple times. // It was done this way in the old code too, so no "regression" here; but // it could be done better try { final IdentifierGenerator ig = identifierValueBinding.createIdentifierGenerator( getIdentifierGeneratorFactory(), dialect, defaultCatalog, defaultSchema, entityBinding ); if ( ig instanceof ExportableProducer ) { ( (ExportableProducer) ig ).registerExportables( getDatabase() ); } } catch (MappingException e) { // ignore this for now. The reasoning being "non-reflective" binding as needed // by tools. We want to hold off requiring classes being present until we // try to build a SF. Here, just building the Metadata, it is "ok" for an // exception to occur, the same exception will happen later as we build the SF. log.debugf( "Ignoring exception thrown when trying to build IdentifierGenerator as part of Metadata building", e ); } }
@Test public void testExplicitTableGeneratorImplicitName() { final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); final Metadata bootModel = new MetadataSources( ssr ) .addAnnotatedClass( ExplicitTableGeneratorImplicitNameEntity.class ) .buildMetadata(); final PersistentClass entityMapping = bootModel.getEntityBinding( ExplicitTableGeneratorImplicitNameEntity.class.getName() ); final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( bootModel.getIdentifierGeneratorFactory(), ssr.getService( JdbcEnvironment.class ).getDialect(), null, null, (RootClass) entityMapping ); final TableGenerator tableGenerator = assertTyping( TableGenerator.class, generator ); assertThat( tableGenerator.getTableName(), is( "my_id_table" ) ); // - note : currently initialValue=1 in mapping is shows up here as 2 assertThat( tableGenerator.getInitialValue(), is( 1 ) ); assertThat( tableGenerator.getIncrementSize(), is( 25 ) ); }
@Test public void testImplicitTableGenerator() { final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); final Metadata bootModel = new MetadataSources( ssr ) .addAnnotatedClass( ImplicitTableGeneratorEntity.class ) .buildMetadata(); final PersistentClass entityMapping = bootModel.getEntityBinding( ImplicitTableGeneratorEntity.class.getName() ); final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( bootModel.getIdentifierGeneratorFactory(), ssr.getService( JdbcEnvironment.class ).getDialect(), null, null, (RootClass) entityMapping ); final TableGenerator tableGenerator = assertTyping( TableGenerator.class, generator ); assertThat( tableGenerator.getTableName(), is( "my_id_table" ) ); // all the JPA defaults since they were not defined assertThat( tableGenerator.getInitialValue(), is( 1 ) ); assertThat( tableGenerator.getIncrementSize(), is( 50 ) ); }
@Test public void testExplicitSequenceGeneratorImplicitName() { final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder() .applySetting( AvailableSettings.PREFER_GENERATOR_NAME_AS_DEFAULT_SEQUENCE_NAME, "false" ) .build(); final Metadata bootModel = new MetadataSources( ssr ) .addAnnotatedClass( ExplicitSequenceGeneratorImplicitNameEntity.class ) .buildMetadata(); final PersistentClass entityMapping = bootModel.getEntityBinding( ExplicitSequenceGeneratorImplicitNameEntity.class.getName() ); final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( bootModel.getIdentifierGeneratorFactory(), ssr.getService( JdbcEnvironment.class ).getDialect(), null, null, (RootClass) entityMapping ); final SequenceStyleGenerator sequenceStyleGenerator = assertTyping( SequenceStyleGenerator.class, generator ); // all the JPA defaults since they were not defined assertThat( sequenceStyleGenerator.getDatabaseStructure().getName(), is( SequenceStyleGenerator.DEF_SEQUENCE_NAME ) ); assertThat( sequenceStyleGenerator.getDatabaseStructure().getInitialValue(), is( 100 ) ); assertThat( sequenceStyleGenerator.getDatabaseStructure().getIncrementSize(), is( 500 ) ); }
@Test public void baseline() { final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); final Metadata bootModel = new MetadataSources( ssr ) .addAnnotatedClass( ExplicitGeneratorEntity.class ) .buildMetadata(); final PersistentClass entityMapping = bootModel.getEntityBinding( ExplicitGeneratorEntity.class.getName() ); final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( bootModel.getIdentifierGeneratorFactory(), ssr.getService( JdbcEnvironment.class ).getDialect(), null, null, (RootClass) entityMapping ); final SequenceStyleGenerator sequenceStyleGenerator = assertTyping( SequenceStyleGenerator.class, generator ); assertThat( sequenceStyleGenerator.getDatabaseStructure().getName(), is( "my_real_db_sequence" ) ); // all the JPA defaults since they were not defined assertThat( sequenceStyleGenerator.getDatabaseStructure().getInitialValue(), is( 100 ) ); assertThat( sequenceStyleGenerator.getDatabaseStructure().getIncrementSize(), is( 500 ) ); }
@Test public void testExplicitTableGenerator() { final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); final Metadata bootModel = new MetadataSources( ssr ) .addAnnotatedClass( ExplicitTableGeneratorEntity.class ) .buildMetadata(); final PersistentClass entityMapping = bootModel.getEntityBinding( ExplicitTableGeneratorEntity.class.getName() ); final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( bootModel.getIdentifierGeneratorFactory(), ssr.getService( JdbcEnvironment.class ).getDialect(), null, null, (RootClass) entityMapping ); final TableGenerator tableGenerator = assertTyping( TableGenerator.class, generator ); assertThat( tableGenerator.getTableName(), is( "my_real_id_table" ) ); // all the JPA defaults since they were not defined // - note : currently initialValue=1 in mapping is shows up here // as 2 // assertThat( tableGenerator.getInitialValue(), is( 1 ) ); assertThat( tableGenerator.getIncrementSize(), is( 25 ) ); }
@Test public void testImplicitSequenceGeneratorGeneratorName() { final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); final Metadata bootModel = new MetadataSources( ssr ) .addAnnotatedClass( ImplicitSequenceGeneratorEntity.class ) .buildMetadata(); final PersistentClass entityMapping = bootModel.getEntityBinding( ImplicitSequenceGeneratorEntity.class.getName() ); final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( bootModel.getIdentifierGeneratorFactory(), ssr.getService( JdbcEnvironment.class ).getDialect(), null, null, (RootClass) entityMapping ); final SequenceStyleGenerator sequenceStyleGenerator = assertTyping( SequenceStyleGenerator.class, generator ); // PREFER_GENERATOR_NAME_AS_DEFAULT_SEQUENCE_NAME == true (the default) indicates that the generator-name // should be used as the default instead. assertThat( sequenceStyleGenerator.getDatabaseStructure().getName(), is( "my_db_sequence" ) ); // the JPA defaults since they were not defined assertThat( sequenceStyleGenerator.getDatabaseStructure().getInitialValue(), is( 1 ) ); assertThat( sequenceStyleGenerator.getDatabaseStructure().getIncrementSize(), is( 50 ) ); }
.buildMetadata(); final PersistentClass entityMapping = bootModel.getEntityBinding( ExplicitSequenceGeneratorImplicitNameEntity.class.getName() ); final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( bootModel.getIdentifierGeneratorFactory(), ssr.getService( JdbcEnvironment.class ).getDialect(),
@Test public void testImplicitSequenceGenerator() { final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder() .applySetting( AvailableSettings.PREFER_GENERATOR_NAME_AS_DEFAULT_SEQUENCE_NAME, "false" ) .build(); final Metadata bootModel = new MetadataSources( ssr ) .addAnnotatedClass( ImplicitSequenceGeneratorEntity.class ) .buildMetadata(); final PersistentClass entityMapping = bootModel.getEntityBinding( ImplicitSequenceGeneratorEntity.class.getName() ); final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( bootModel.getIdentifierGeneratorFactory(), ssr.getService( JdbcEnvironment.class ).getDialect(), null, null, (RootClass) entityMapping ); final SequenceStyleGenerator sequenceStyleGenerator = assertTyping( SequenceStyleGenerator.class, generator ); // PREFER_GENERATOR_NAME_AS_DEFAULT_SEQUENCE_NAME == false indicates that the legacy // default (hibernate_sequence) should be used assertThat( sequenceStyleGenerator.getDatabaseStructure().getName(), is( "hibernate_sequence" ) ); // the JPA defaults since they were not defined assertThat( sequenceStyleGenerator.getDatabaseStructure().getInitialValue(), is( 1 ) ); assertThat( sequenceStyleGenerator.getDatabaseStructure().getIncrementSize(), is( 50 ) ); }
IdentifierGenerator generator = model.getIdentifier().createIdentifierGenerator( metadata.getIdentifierGeneratorFactory(), jdbcServices.getJdbcEnvironment().getDialect(),
IdentifierGenerator generator = entityBinding.getIdentifier().createIdentifierGenerator( metadata.getIdentifierGeneratorFactory(), metadata.getDatabase().getDialect(),
@Test public void testExplicitIncrementGenerator() { final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); final Metadata bootModel = new MetadataSources( ssr ) .addAnnotatedClass( ExplicitIncrementGeneratorEntity.class ) .buildMetadata(); final PersistentClass entityMapping = bootModel.getEntityBinding( ExplicitIncrementGeneratorEntity.class.getName() ); final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( bootModel.getIdentifierGeneratorFactory(), ssr.getService( JdbcEnvironment.class ).getDialect(), null, null, (RootClass) entityMapping ); assertTyping( IncrementGenerator.class, generator ); }
@Test public void testImplicitIncrementGenerator() { final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); final Metadata bootModel = new MetadataSources( ssr ) .addAnnotatedClass( ImplicitIncrementGeneratorEntity.class ) .buildMetadata(); final PersistentClass entityMapping = bootModel.getEntityBinding( ImplicitIncrementGeneratorEntity.class.getName() ); final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( bootModel.getIdentifierGeneratorFactory(), ssr.getService( JdbcEnvironment.class ).getDialect(), null, null, (RootClass) entityMapping ); assertTyping( IncrementGenerator.class, generator ); }
identifierColumnAlias = col.getAlias( dialect ); identifierGenerator = idColl.getIdentifier().createIdentifierGenerator( creationContext.getMetadata().getIdentifierGeneratorFactory(), factory.getDialect(),
.createIdentifierGenerator( dialect, defaultCatalog, .createIdentifierGenerator( dialect, defaultCatalog,
IdentifierGenerator ig = pc.getIdentifier().createIdentifierGenerator( getIdentifierGeneratorFactory(), dialect, IdentifierGenerator ig = ( ( IdentifierCollection ) collection ).getIdentifier().createIdentifierGenerator( getIdentifierGeneratorFactory(), dialect,
IdentifierGenerator ig = pc.getIdentifier().createIdentifierGenerator( getIdentifierGeneratorFactory(), dialect, IdentifierGenerator ig = ( ( IdentifierCollection ) collection ).getIdentifier().createIdentifierGenerator( getIdentifierGeneratorFactory(), dialect,
PersistentClass pc = pcIter.next(); if (!pc.isInherited()) { IdentifierGenerator ig = pc.getIdentifier().createIdentifierGenerator( config.getIdentifierGeneratorFactory(), dialect, defaultCatalog, defaultSchema, (RootClass) pc); if (collection.isIdentified()) { IdentifierGenerator ig = ((IdentifierCollection) collection).getIdentifier() .createIdentifierGenerator(config.getIdentifierGeneratorFactory(), dialect, defaultCatalog, defaultSchema, null);
final IdentifierGenerator ig = identifierValueBinding.createIdentifierGenerator( options.getServiceRegistry().getService( MutableIdentifierGeneratorFactory.class ), dialect,
.next(); if (!persistentClass.isInherited()) { IdentifierGenerator ig = persistentClass.getIdentifier().createIdentifierGenerator( metadata.getIdentifierGeneratorFactory(), database.getDialect(),