实际上,Hibernate会同时解释GenerationType.AUTO
并GenerationType.SEQUENCE
使用其org.hibernate.id.enhanced.SequenceStyleGenerator
。SequenceStyleGenerator是一个id生成策略,它根据基础数据库支持的内容选择两种策略之一。如果数据库支持序列,则SequenceStyleGenerator将使用序列;否则,将使用序列。如果不是,则SequenceStyleGenerator退回到使用“序列表”。使用哪个生成器的“映射”由以下设置控制:hibernate.id.new_generator_mappings
。将其设置为true将启用上面刚刚描述的行为。不幸的是,出于向后兼容的原因,我们不得不将其默认设置为false。因此,要利用这一点,您需要确保将设置设置为true。
此外,如果未指定名称,则可以配置SequenceStyleGenerator使其更喜欢全局序列或每个实体的序列。这由名为prefer_sequence_per_entity
通常,SequenceStyleGenerator是相当可配置的。看看它的javadocs了解更多信息:http://docs.jboss.org/hibernate/orm/4.1/javadocs/index.html?org/hibernate/id/enhanced/SequenceStyleGenerator.html