2

我有一个数据库(JPA 2 Eclipselink),其中有订单和项目,每个订单可以有很多项目,每个项目只能分配给一个订单。这是单向关系。

订单实体:

@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) 放在订单实体类中?还是保持单向,但拥有方将是订单并从项目实体中删除对订单的任何引用?

4

1 回答 1

3

要么按照您在问题中的建议进行双向关联并添加级联,要么明确删除链接到订单的所有项目(使用 JPQL 删除查询,或通过搜索然后删除它们),然后删除命令。

在这种情况下,双向关联是有意义的,您可能会在代码中的其他几个地方从中受益。

于 2013-02-17T14:38:34.380 回答