猿问

ManyToMany 关系上的 PostgreSQL 约束违规错误,但应该存在外键

我正在尝试建立一个与此处显示的系统非常相似的系统:

https://vladmihalcea.com/the-best-way-to-use-the-manytomany-annotation-with-jpa-and-hibernate/

PostgreSQL 模式的设置方式与下面所示的内容类相同,映射到具有 content_id 和 tag_id 的表中的标记类,这两个表在各自的表上具有外键约束。我遇到的问题是,当尝试保留新的内容对象时,我正在检查该对象的标签是否存在,如果存在,我将使用 addTag 方法添加它们,然后保留该对象。否则,我创建它们并保留该对象。下面还显示了执行此操作的 POST 方法。存储库成功找到标签,因为它们已经被持久化,但是当我尝试持久化内容时出现以下错误:org.postgresql.util.PSQLException:错误:在表上插入或更新

"content_tag" violates foreign key constraint "tag_id_fkey"
  Detail: Key (tag_id)=(11) is not present in table "tag".

我单步执行代码,当使用 addTag 方法将标签添加到内容中时,它显示它们的 id 与数据库中已有的标签匹配,所以我不明白为什么当我保留内容时它是一个不同的 id。有谁知道我如何才能防止这种情况发生并让内容持续有效?


茅侃侃
浏览 84回答 1
1回答

动漫人物

问题是下面的注释。@JoinTable(name = "content_tag",         joinColumns = @JoinColumn(name = "content_id"),         inverseJoinColumns = @JoinColumn(name="tag_id") )joinColumns 和 inverseJoinColumns 颠倒了
随时随地看视频慕课网APP

相关分类

Java
我要回答