我需要使用一個序列來獲得唯一的值。生產代碼使用postgres,但我想通過Hibernate訪問它,以便我可以用HSQLDB測試它。如何在Hibernate中創建和讀取序列?
如何在Hibernate中創建和讀取序列?
我需要使用一個序列來獲得唯一的值。生產代碼使用postgres,但我想通過Hibernate訪問它,以便我可以用HSQLDB測試它。如何在Hibernate中創建和讀取序列?
如何在Hibernate中創建和讀取序列?
它包含代碼來確定您的數據庫是否支持序列(supportsSequences()
)以及創建和刪除它們的方法('getCreateSequenceString(String sequenceName)')。
不幸的是,從會話中獲取方言沒有乾淨的方法;看到How to get Hibernate dialect during runtime
[老答案]
你可以嘗試從HibernateDialect
重用的代碼,但主要的API不提供此。你最好的選擇可能是將其封裝在一個界面中,然後根據你的方言使用不同的實現。
你能詳細說明一下使用HibernateDialect中的代碼嗎? – rogerdpack
@rogerdpack:謝謝你的ping,我更新了我的答案 –
這太糟糕了,hibernate似乎*不支持*序列(通過hibernate.hbm2ddl.auto等自動創建它們)似乎是通過原始sql查詢,這不是便攜式,並且不'沒有自動創建:| – rogerdpack