首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法使用JPA注解和Hibernate动态选择@GeneratedValue策略?

有没有办法使用JPA注解和Hibernate动态选择@GeneratedValue策略?
EN

Stack Overflow用户
提问于 2012-10-05 06:43:42
回答 1查看 29.6K关注 0票数 20

我正在工作的产品,将支持多个数据库引擎(甲骨文,微软will,MySQL)。对于Oracle,我更喜欢使用序列而不是顺序表,以避免在大容量安装时可能出现的并发和锁定问题,但其他数据库引擎不支持序列。此外,我更喜欢在每个表中使用一个序列,而不是全局序列(例如hibernate_sequence),因此@GeneratedValue(strategy = GenerationType.AUTO)将不起作用。有没有办法在运行时动态选择策略?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-05 09:18:29

实际上,Hibernate使用它的org.hibernate.id.enhanced.SequenceStyleGenerator解释GenerationType.AUTOGenerationType.SEQUENCE。SequenceStyleGenerator是一种id生成策略,它根据底层数据库支持的内容从两种策略中选择一种。如果数据库支持序列,SequenceStyleGenerator将使用序列;如果不支持,SequenceStyleGenerator将退回到使用“序列表”。使用哪个生成器的这个“映射”由一个设置控制:hibernate.id.new_generator_mappings。将其设置为true将启用我刚才描述的行为。不幸的是,出于向后兼容性的原因,我们不得不将其缺省为false。因此,要利用这一点,您需要确保将设置设置为true。

此外,您可以将SequenceStyleGenerator配置为优先选择全局序列或每个实体的序列(如果未指定名称)。这由名为prefer_sequence_per_entity的设置控制

一般来说,SequenceStyleGenerator是非常可配置的。有关更多信息,请查看它的javadoc:http://docs.jboss.org/hibernate/orm/4.1/javadocs/index.html?org/hibernate/id/enhanced/SequenceStyleGenerator.html

票数 38
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12737092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档