我有一个数据库(JPA 2 Eclipselink),其中有Order和Item,每个订单可以有很多项目,每个项目只能分配给一个订单。这是单向关系。
订单实体:
@Entity
public class Order implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
}
项目实体具有:
@Entity
public class Item implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne
Order o;
}
但如何设置如果从数据库中删除订单,所有引用它的项目都将被删除?在单向关系中是否可能,或者我必须创建双向并在订单实体类中放置@OneToMany(cascade = remove)?或保持单向,但拥有方将是订单并从项目实体中删除对订单的任何引用?
答案 0 :(得分:3)
您可以将关联设为双向并添加级联,正如您在问题中建议的那样,或者您明确删除链接到订单的所有项目(使用JPQL删除查询,或搜索它们然后删除它们),然后删除订单。
在这种情况下,双向关联是有意义的,您可能会在代码中的其他几个位置受益。