2009-10-22 15 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,我更新了我的答案 –