栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JPA OneToMany与CascadeType一起保留。ALL不会保留子项

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JPA OneToMany与CascadeType一起保留。ALL不会保留子项

您正在混合两个非常不同的概念。

A

CascadeType
处理将什么动作串连到关系。当指定时
CascadeType.ALL
,您告诉持久性提供者,只要您持久,合并或删除该实体,这些操作都将被复制到关系中。

但是,为了使级联操作起作用,必须首先确保正确管理该关系。如果查看Vlad的帖子,您会注意到上两个非常重要的方法

Post

public void addDetails(PostDetails details) {  this.details = details;  details.setPost( this );}public void removeDetails() {  this.details.setPost( null );   this.details = null;}

这些方法可确保根据您的要求正确维护a

PostDetails
和a 之间的关系
Post
。因此,假设以下映射:

public class Post {  @oneToOne(cascade = CascadeType.ALL, mappedBy = "post", orphanRemoval = true)  private PostDetails details;}

您可以按照以下步骤执行它们的持久化操作:

PostDetails details = new PostDetails();details.setUser( currentUser );Post post = new Post();post.addDetails( details );session.persist( post );

您会注意到我使用

addDetails
而不是典型的,
setDetails
因为我想确保
Post
和之间的关系
PostDetails
已初始化。

希望能有所帮助。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/568902.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号