为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

茅侃侃 2024-01-17 20:45:51
我正在尝试建立一个与此处显示的系统非常相似的系统: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。有谁知道我如何才能防止这种情况发生并让内容持续有效?
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

问题是下面的注释。

@JoinTable(name = "content_tag",
        joinColumns = @JoinColumn(name = "content_id"),
        inverseJoinColumns = @JoinColumn(name="tag_id")
)

joinColumns 和 inverseJoinColumns 颠倒了


查看完整回答
反对 回复 2024-01-17
  • 1 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信