当前位置: 首页 > 面试题库 >

有没有一种方法可以使用JPA批注和Hibernate动态选择@GeneratedValue策略?

束高雅
2023-03-14
问题内容

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


问题答案:

实际上,Hibernate会同时解释GenerationType.AUTOGenerationType.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



 类似资料:
  • 问题内容: 当selectedOption的值更改时,我想调用一个函数。在SwiftUI中,有没有一种类似于编辑TextField的方法? 具体来说,我想在用户更改selectedOption时保存选择的选项。 这是我的选择器: 我仍然是SwiftUI的新手,希望获得一些帮助。谢谢! 问题答案: 如果在视图中使用@State值,则不需要多余的变量 如果需要对@State进行单独的操作,最简单的方法

  • 问题内容: 嗨,我想使用WMI类来查找应用程序和产品信息。但是问题是我想使用Java或任何脚本语言(如python,javascript或perl)。我听说过JWMI,这可能是一个选择。有人可以帮我吗??? 问题答案: JavaScript和Java不是一回事。 JavaScript Windows脚本宿主(WSH)下提供了JavaScript。有了它,访问WMI相当容易: jWMI(Java)

  • 问题内容: 我正在开发一个新项目(),并创建了一个包含大量变量的Object。由于我打算为所有这些添加吸气剂和设置器,所以我想知道:是否存在在给定类中自动生成吸气剂和设置器的捷径? 问题答案: 在所需类的源代码窗口中弹出上下文菜单(即右键单击)。然后选择子菜单;从该菜单中进行选择将导致出现向导窗口。 选择您要为其创建getter和setter的变量,然后单击。

  • 问题内容: 我正在建立一个带有flask的网站,其中用户具有帐户并能够登录。我正在使用flask-principal作为登录部分和角色管理。有没有办法让用户的会话在5分钟或10分钟后过期?我在flask文档或flask-principal文档中找不到该文件。 我想到了一种手动方法,在登录时在服务器端设置一个带有时间标签的变量,并在用户执行下一个操作时,服务器会验证该时间戳记上的时间增量并删除会话。

  • 问题内容: 我对Java 5注释有点陌生,我很好奇这两种方法是否可行: 此注释将为您生成一个简单的getter和setter。 该注解表明变量是粗野,空,这样你就不必每次都写样板代码。 这些都可以吗?如果可能的话,它们似乎是我要为其编写注释的第一件事。由于我在阅读文档时对这些内容了解不多,因此我假设注释并不是真正的含义。这里的任何方向将不胜感激。 问题答案: 注释处理发生在抽象语法树上。这是解析器