微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

@ManyToOne JPA 关联的 CascadeType.ALL 是什么意思

如何解决@ManyToOne JPA 关联的 CascadeType.ALL 是什么意思

的含义CascadeType.ALL是持久性将传播(级联)所有EntityManager操作(PERSIST, REMOVE, REFRESH, MERGE, DETACH)到相关实体。

在您的情况下,这似乎是一个坏主意,因为删除 anAddress会导致删除相关的User. 由于用户可以拥有多个地址,因此其他地址将成为孤立地址。但是,相反的情况(注释User)将有意义 - 如果地址仅属于单个用户,则在删除用户时传播属于该用户的所有地址的删除是安全的。

顺便说一句:您可能希望向mappedBy="addressOwner"添加一个属性User以向持久性提供程序发出连接列应该在 ADDRESS 表中的信号。

解决方法

我想我误解了在关系中级联的含义@ManyToOne

案子:

public class User {

   @OneToMany(fetch = FetchType.EAGER)
   protected Set<Address> userAddresses;

}

public class Address {

   @ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL)
   protected User addressOwner;

}

的含义是cascade = CascadeType.ALL什么?例如,如果我从数据库中删除某个地址,我添加的事实如何cascade = CascadeType.ALL影响我的数据(User我猜是)?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。