2009-10-22 31 views
1

我需要使用一个序列来获得唯一的值。生产代码使用postgres,但我想通过Hibernate访问它,以便我可以用HSQLDB测试它。如何在Hibernate中创建和读取序列?

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

+0

这太糟糕了,hibernate似乎*不支持*序列(通过hibernate.hbm2ddl.auto等自动创建它们)似乎是通过原始sql查询,这不是便携式,并且不'没有自动创建:| – rogerdpack

回答

2

看看Dialecthttps://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不提供此。你最好的选择可能是将其封装在一个界面中,然后根据你的方言使用不同的实现。

+0

你能详细说明一下使用HibernateDialect中的代码吗? – rogerdpack

+0

@rogerdpack:谢谢你的ping,我更新了我的答案 –