gpt4 book ai didi

Hibernate:双向一对多,以一为父级

转载 作者:行者123 更新时间:2023-12-02 22:54:47 26 4
gpt4 key购买 nike

我正在尝试设置以“one”为父级的双向一对多关系

我有一个 parent :

@Entity
public class VideoOnDemand {

@OneToMany(cascade = CascadeType.ALL)
@LazyCollection(LazyCollectionOption.FALSE)
@JoinColumn(name = "video_id")
private List<CuePoint> cuePoints = new ArrayList<CuePoint>();
}

和一个 child :

@Entity
public class CuePoint {

@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "video_id", insertable = false, updatable = false)
private VideoOnDemand video;
}

我使用了Hibernate官方的推荐documentation (2.2.5.3.1.1)。但是,Hibernate 似乎并不理解 CuePoint 是一个子实体,因此,当我删除 CuePoint 时,它也会删除 VideoOnDemand 以及所有其他 CuePoint。

我做错了什么,正确的方法是什么?

最佳答案

通过这样做,您可以将唯一的双向关联映射为两个单向关联。其中一侧必须标记为另一侧的反面:

@Entity
public class VideoOnDemand {

@OneToMany(mappedBy = "video", cascade = CascadeType.ALL)
private List<CuePoint> cuePoints = new ArrayList<CuePoint>();
}

@Entity
public class CuePoint {

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "video_id", insertable = false, updatable = false)
private VideoOnDemand video;
}

mappedBy 属性必须包含关联另一端的属性名称。

请注意,这确实是第 2.2.5.3.1.1 段中描述的内容。文档。

关于Hibernate:双向一对多,以一为父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6633708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com