dum*_*nal 7 hibernate jpa hibernate-mapping spring-data
可以说我们有两个实体Entity Node和Entity Cluster。A Cluster有很多Node。一个Node可以属于多个Cluster。因此,Cluster其中有一个@ManyToMany注释。但是Node不知道Cluster它属于哪个(有意)。
当我删除a时,Cluster我想保留它所有的Nodes(将来我可以将它们添加Node到另一个s中Cluster)。所以我不需要 Cascade.DELETE。但是,如果删除a Node,Cluster则应更新所有它所属的对象(Node将从中删除它们)。
使用JPA处理此问题的最佳方法是什么?
那是因为Node不知道Cluster它属于什么。
如果使用双向关系,则必须选择哪一侧将更新Node和之间的链接Cluster。选择对您的业务而言最重要的实体...要保存关联,您需要保存关系的拥有实体。
如果您不想要双向关系,则需要在删除自身之前Node从全部中Cluster.nodes删除Node...
实际上,在单向关系中,您可以使用`Cluster 类joinColumn="clusterId"中的@ManyToMany注释中的属性指定关系的持有者实体。
这是您的代码应该如何:
@Entity
@Table(name="Cluster")
public class Cluster {
//Id and properties
@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name="Cluster_Nodes",
joinColumns={@JoinColumn(name="clusterId")},
inverseJoinColumns={@JoinColumn(name="nodeId")})
private Set<Node> nodes = new HashSet<Node>();
// Getter and Setter methods
}
Run Code Online (Sandbox Code Playgroud)
如需进一步阅读,请查看:
| 归档时间: |
|
| 查看次数: |
3648 次 |
| 最近记录: |