亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

@JoinColumn 在 Hibernate 4 中給出錯誤“未找到邏輯名稱 ID 的列”

@JoinColumn 在 Hibernate 4 中給出錯誤“未找到邏輯名稱 ID 的列”

慕田峪7331174 2022-10-20 15:12:09
我在實體類的列上有以下注釋。@OneToOne(fetch = FetchType.LAZY)@JoinColumn(name = "INQUIRYID", referencedColumnName="ID", updatable=false, insertable=false)private MyTable myInquiry; 它在運行時給出以下錯誤。column with logical name ID not found in entity class由于引用的列是主鍵,我刪除了 referencedColumnName 屬性并更新到下面 @OneToOne(fetch = FetchType.LAZY)    @JoinColumn(name = "INQUIRYID", updatable=false, insertable=false)    private MyTable myInquiry;這與Hibernate 5.3完美配合,但是一旦我進入hibernate 4,我就會看到一些異常情況。在hibernate 5中,我僅在引用另一個類的某些ID(PK)的列中遇到此問題。但是,在休眠 4 中,我也看到非 pk 列的此錯誤。對于引用非主鍵的列,我開始遇到相同的錯誤。@ManyToOne(fetch = FetchType.EAGER)@JoinColumn(name = "AB", referencedColumnName = "AB")private MyTable someData;上面的代碼在休眠 4中給了我錯誤Column with logical name AB not found in entity class. 在這里, AB 是一個非主鍵列。所以我不能刪除 referencedColumnName 屬性。純粹是因為休眠版本還是這種行為有不同的原因?
查看完整描述

1 回答

?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

hibernate 4.1.7有一個錯誤

此問題的解決方法是在列名周圍加上重音符號。

無法在 org.hibernate.mapping.Table(template) 及其相關的超級表和輔助表中找到具有邏輯名稱的列:id

@ManyToOne @JoinColumnsOrFormulas({ @JoinColumnOrFormula(column = @JoinColumn(name = "template", referencedColumnName = "id")),
@JoinColumnOrFormula(formula = @JoinFormula(value = "'custom'", referencedColumnName = "type") ) }) 這是由在 TableColumnNameBinding 的logicalToPhysical 映射中標識列名引起的。在此映射中,列名被重音符號 (`id`) 包圍,而檢查使用普通列名 (id) 查找映射。

此問題的解決方法是在列名周圍加上重音符號。

@ManyToOne @JoinColumnsOrFormulas({ @JoinColumnOrFormula(column = @JoinColumn(name = "template", referencedColumnName = "`id`")),
@JoinColumnOrFormula(formula = @JoinFormula(value = "'custom'", referencedColumnName = "`類型`")) })


查看完整回答
反對 回復 2022-10-20
  • 1 回答
  • 0 關注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號