我的問題是我正在將項(xiàng)目組合從 Java 8/Hibernate 4.x 堆棧遷移到 Java 11/Hibernate 5.4 堆棧。在第二種情況下,一旦應(yīng)用程序嘗試保存對(duì)象,我就會(huì)收到此錯(cuò)誤:org.postgresql.util.PSQLException:錯(cuò)誤:關(guān)系“hibernate_sequence”不存在我上面提到的另一個(gè)問題的答案提供了一些見解,但我仍然不明白為什么會(huì)出現(xiàn)該錯(cuò)誤:我們所有的實(shí)體一直在使用每個(gè)自己的序列,并且該序列在相應(yīng)的 hbm.xml 中明確指定。這是一個(gè)這樣的映射文件:<?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>看起來序列的規(guī)范被忽略了。我查閱了一些有關(guān)使用 XML 的遺留 Hibernate 映射的文檔,但我找不到與 Hibernate 5 相關(guān)的任何內(nèi)容,據(jù)報(bào)道 Hibernate 5仍支持此類映射。一個(gè)解決方案可能是完全遷移到注釋,但該組合包含十幾個(gè)應(yīng)用程序,這些應(yīng)用程序具有數(shù)十個(gè)表和總數(shù)量(在一個(gè)應(yīng)用程序中)超過 1200 列。這項(xiàng)任務(wù)根本不切實(shí)際,更何況一些應(yīng)用程序正在從頭開始重寫為微服務(wù)。我的問題是是否仍然支持我所使用的序列生成標(biāo)識(shí)符的規(guī)范?
1 回答

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