我的問題是我正在將項目組合從 Java 8/Hibernate 4.x 堆棧遷移到 Java 11/Hibernate 5.4 堆棧。在第二種情況下,一旦應用程序嘗試保存對象,我就會收到此錯誤:org.postgresql.util.PSQLException:錯誤:關系“hibernate_sequence”不存在我上面提到的另一個問題的答案提供了一些見解,但我仍然不明白為什么會出現該錯誤:我們所有的實體一直在使用每個自己的序列,并且該序列在相應的 hbm.xml 中明確指定。這是一個這樣的映射文件:<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"?? "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping default-lazy="false">? ? <class name="…" table="data_receiving">? ? ? ? <id name="systemId" column="system_id">? ? ? ? ? ? <generator class="sequence">? ? ? ? ? ? ? ? <param name="sequence">system_id_seq</param>? ? ? ? ? ? </generator>? ? ? ? </id>? ? ? ? <property name="source" column="source" />? ? ? ? …? ? </class></hibernate-mapping>看起來序列的規范被忽略了。我查閱了一些有關使用 XML 的遺留 Hibernate 映射的文檔,但我找不到與 Hibernate 5 相關的任何內容,據報道 Hibernate 5仍支持此類映射。一個解決方案可能是完全遷移到注釋,但該組合包含十幾個應用程序,這些應用程序具有數十個表和總數量(在一個應用程序中)超過 1200 列。這項任務根本不切實際,更何況一些應用程序正在從頭開始重寫為微服務。我的問題是是否仍然支持我所使用的序列生成標識符的規范?
1 回答

翻翻過去那場雪
TA貢獻2065條經驗 獲得超14個贊
我不得不深入研究 Hibernate 的源代碼以找到一個:參數sequence
已重命名為sequence_name
.
<param name="sequence">system_id_seq</param>
現在必須
<param name="sequence_name">system_id_seq</param>
這使得有必要更新所有 hbm.xml 文件,這是我在 Eclipse 中使用查找和替換所做的。
添加回答
舉報
0/150
提交
取消