【问题标题】:How to create and read a sequence in Hibernate?如何在 Hibernate 中创建和读取序列?
【发布时间】:2010-12-08 23:56:36
【问题描述】:

我需要使用序列来获取唯一值。生产代码使用 postgres,但我想通过 Hibernate 访问它,以便我可以使用 HSQLDB 对其进行测试。

如何在 Hibernate 中创建和读取序列?

【问题讨论】:

  • 太糟糕了hibernate似乎不支持序列(通过hibernate.hbm2ddl.auto等自动创建它们)似乎唯一的方法是通过原始sql查询,它不那么便携,也没有自动创建:|

标签: java hibernate postgresql orm hsqldb


【解决方案1】:

看看Dialect (https://github.com/hibernate/hibernate-orm/blob/5.0/hibernate-core/src/main/java/org/hibernate/dialect/Dialect.java)。

它包含确定您的数据库是否支持序列的代码 (supportsSequences()) 以及创建和删除它们的方法 ('getCreateSequenceString(String sequenceName)')。

不幸的是,没有干净的方法可以从会话中获取方言;见How to get Hibernate dialect during runtime

[旧答案]

您可以尝试重用来自 HibernateDialect 的代码,但主 API 不提供此功能。您最好的选择可能是将其包装在一个界面中,然后根据您的方言使用不同的实现。

【讨论】:

  • 你能详细说明一下这里使用 HibernateDialect 的代码吗?
  • @rogerdpack:感谢您的 ping,我更新了答案
猜你喜欢
  • 1970-01-01
  • 2012-07-26
  • 2012-01-20
  • 2016-06-08
  • 2014-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
相关资源
最近更新 更多