jpa,两个表加一个中间表,如何才能不生成外键

2021-02-01 23:43:10 +08:00
 NoKey

首先

spring.jpa.hibernate.ddl-auto=update

这里改成 none,应该就没问题,但是这里给改了的话,jpa 的便利性就失去了很多

我这里尝试了,两张表直接关联,使用 @JoinColumn 在这个里面加一句

foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT)

就能避免创建外键

但是,如果两张表中间加一张关系表,用

@JoinTable

关联,上面的设置 foreignKey 的方式无效

请教各位大佬,有没有好的办法啊,谢谢

1438 次点击
所在节点    程序员
4 条回复
luxiang1996
2021-02-02 06:59:49 +08:00
@JoinTable(name = "tablea_tableb",

            joinColumns = {@JoinColumn(name = "tablea_id", referencedColumnName = "id")},

            inverseJoinColumns = {@JoinColumn(name = "tableb_id", referencedColumnName = "id")},

            foreignKey = @ForeignKey(name = "none", value = ConstraintMode.NO_CONSTRAINT),

            inverseForeignKey = @ForeignKey(name = "none", value = ConstraintMode.NO_CONSTRAINT))
airfling
2021-02-02 08:13:45 +08:00
spring.jpa.hibernate.ddl-auto=validate 然后自己建表,可以用 liquibase 进行数据库升级
NoKey
2021-02-09 11:40:15 +08:00
@luxiang1996 感谢,确实有效。不过我这里遇到新的问题了,我写测试代码测试。有几个实体类,student,techer,然后有一张 student_techer 关联表,通过这个注解,没问题,工作正常。这个时候,我添加一个 lesson 类,就是课程,设定一个教师对应一个课程,写了一个 teacher_and_lesson 中间表。我在 teacher 中加了一个 lesson 成员,将这个注解加上去,启动完成后,teacher_and_lesson 表中会多出一个 student_id 字段。。。😭
NoKey
2021-02-09 11:41:01 +08:00
@airfling 感谢。自己建表,引入 liquibase 的麻烦的地方就在于,表格有修改的时候,会修改好几个地方。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/750459

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX