关于Spring JPA不想使用外键的同学@ForeignKey

阅读: 评论:0

关于Spring JPA不想使用外键的同学@ForeignKey

关于Spring JPA不想使用外键的同学@ForeignKey

关于Spring JPA不想使用外键的同学@ForeignKey

起因:

1. 之前看阿里开发手册,其中有一项——**不得使用外键与级联,一切外键概念必须在应用层解决**。
于是新开一个项目想用这种方式去设计数据库。
2. 个人喜欢用jpa开发,能自动创建表的功能用起来很爽,但是只要配置一对多,多对多查询代码就会默认创建外键。


打印的语句

数据库中

网上的解决方案

  1. 第一种,直接修改spring的配置 ,改完自动创建表都不行了,直接pass
// An highlighted block
spring.jpa.hibernate.ddl-auto=none
  1. 第二种,在JoinColumn注解中,设置foreginKey. 这种配置大部分可用,但是存在失效的情况
// An highlighted block@ManyToOne@JoinColumn(name = "tid",foreignKey = @ForeignKey(name = "none",value = ConstraintMode.NO_CONSTRAINT))private Teacher teacher;

最后的解决方案

第二种方案大部分没问题,但是还有一种情况就是存在mappedBy的情况

代码如下:

 /*** 上级权限*/@ManyToOne(fetch = FetchType.LAZY)@JoinColumn(name = "parent_id", referencedColumnName = "id",foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))@JsonIgnoreprivate AuthDO parent;/*** 子权限*/@OneToMany(mappedBy = "parent",fetch = FetchType.LAZY)@OrderBy("authSort asc")@org.hibernate.annotations.ForeignKey(name = "none")private List<AuthDO> children;

结束,有更好方法的朋友请回复告知下。谢谢。

本文发布于:2024-01-30 22:13:22,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170662400623195.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:同学   Spring   JPA   ForeignKey
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23