我正在嘗試建立一個(gè)與此處顯示的系統(tǒng)非常相似的系統(tǒng):https://vladmihalcea.com/the-best-way-to-use-the-manytomany-annotation-with-jpa-and-hibernate/PostgreSQL 模式的設(shè)置方式與下面所示的內(nèi)容類相同,映射到具有 content_id 和 tag_id 的表中的標(biāo)記類,這兩個(gè)表在各自的表上具有外鍵約束。我遇到的問題是,當(dāng)嘗試保留新的內(nèi)容對(duì)象時(shí),我正在檢查該對(duì)象的標(biāo)簽是否存在,如果存在,我將使用 addTag 方法添加它們,然后保留該對(duì)象。否則,我創(chuàng)建它們并保留該對(duì)象。下面還顯示了執(zhí)行此操作的 POST 方法。存儲(chǔ)庫(kù)成功找到標(biāo)簽,因?yàn)樗鼈円呀?jīng)被持久化,但是當(dāng)我嘗試持久化內(nèi)容時(shí)出現(xiàn)以下錯(cuò)誤:org.postgresql.util.PSQLException:錯(cuò)誤:在表上插入或更新"content_tag" violates foreign key constraint "tag_id_fkey"
Detail: Key (tag_id)=(11) is not present in table "tag".我單步執(zhí)行代碼,當(dāng)使用 addTag 方法將標(biāo)簽添加到內(nèi)容中時(shí),它顯示它們的 id 與數(shù)據(jù)庫(kù)中已有的標(biāo)簽匹配,所以我不明白為什么當(dāng)我保留內(nèi)容時(shí)它是一個(gè)不同的 id。有誰(shuí)知道我如何才能防止這種情況發(fā)生并讓內(nèi)容持續(xù)有效?
1 回答

動(dòng)漫人物
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊
問題是下面的注釋。
@JoinTable(name = "content_tag", joinColumns = @JoinColumn(name = "content_id"), inverseJoinColumns = @JoinColumn(name="tag_id") )
joinColumns 和 inverseJoinColumns 顛倒了
添加回答
舉報(bào)
0/150
提交
取消