下面列出了怎么用org.hibernate.id.SequenceGenerator的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public void injectServices(ServiceRegistryImplementor serviceRegistry) {
this.serviceRegistry = serviceRegistry;
this.dialect = serviceRegistry.getService( JdbcEnvironment.class ).getDialect();
final ConfigurationService configService = serviceRegistry.getService( ConfigurationService.class );
final boolean useNewIdentifierGenerators = configService.getSetting(
AvailableSettings.USE_NEW_ID_GENERATOR_MAPPINGS,
StandardConverters.BOOLEAN,
true
);
if(!useNewIdentifierGenerators) {
register( "sequence", SequenceGenerator.class );
}
}
private static IdentifierGenerator augmentWithReactiveGenerator(IdentifierGenerator generator, Type type, Properties params, ServiceRegistryImplementor serviceRegistry) {
ReactiveIdentifierGenerator<?> reactiveGenerator;
if (generator instanceof SequenceStyleGenerator) {
DatabaseStructure structure = ((SequenceStyleGenerator) generator).getDatabaseStructure();
if (structure instanceof TableStructure) {
reactiveGenerator = new TableReactiveIdentifierGenerator(true);
}
else if (structure instanceof SequenceStructure) {
reactiveGenerator = new SequenceReactiveIdentifierGenerator();
}
else {
throw new IllegalStateException("unknown structure type");
}
}
else if (generator instanceof TableGenerator) {
reactiveGenerator = new TableReactiveIdentifierGenerator(false);
}
else if (generator instanceof SequenceGenerator) {
reactiveGenerator = new SequenceReactiveIdentifierGenerator();
}
else if (generator instanceof SelectGenerator) {
//TODO: this is easy to fix!
throw new HibernateException("SelectGenerator is not yet supported in Hibernate Reactive");
}
else {
//nothing to do
return generator;
}
((Configurable) reactiveGenerator).configure( type, params, serviceRegistry );
return new ReactiveGeneratorWrapper<>( reactiveGenerator, generator );
}
@Override
public Class getIdentifierGeneratorClass(String strategy) {
Class generatorClass = super.getIdentifierGeneratorClass(strategy);
if("native".equals(strategy) && generatorClass == SequenceGenerator.class) {
generatorClass = super.getIdentifierGeneratorClass("sequence-identity");
}
return generatorClass;
}
/**
* The class (which implements {@link org.hibernate.id.IdentifierGenerator})
* which acts as this dialects native generation strategy.
* <p/>
* Comes into play whenever the user specifies the native generator.
*
* @return The native generator class.
*/
public Class getNativeIdentifierGeneratorClass() {
if ( supportsIdentityColumns() ) {
return IdentityGenerator.class;
}
else if ( supportsSequences() ) {
return SequenceGenerator.class;
}
else {
return TableHiLoGenerator.class;
}
}
public Class getNativeIdentifierGeneratorClass() {
return SequenceGenerator.class;
}
public static boolean supportsIdGenWithBulkInsertion(IdentifierGenerator generator) {
return SequenceGenerator.class.isAssignableFrom( generator.getClass() )
|| PostInsertIdentifierGenerator.class.isAssignableFrom( generator.getClass() );
}