如何解决@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 举报,一经查实,本站将立刻删除。