替换实体的列表,而不是在更新时添加到列表

时间:2015-12-16 20:51:13

标签: java spring hibernate jpa

FooObject有一个实体,其中包含一些由实体管理的条形对象列表。每当我编辑FooObject并在其上调用update时,所有这些列表都会添加到,而不是替换。

   @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, 
              mappedBy = "barEntity", targetEntity = BarTypeAEntity.class)
   private List<BarTypeAEntity> barTypeAs;

我可以先调用更新之前删除所有列表,但在审核这些表时,它会显示为删除然后是新创建,而不仅仅是一次更新。

我怎样才能简单地覆盖而不是附加这些列表

1 个答案:

答案 0 :(得分:0)

使用orphanRemoval = true。这告诉Hibernate如果从BarTypeAEntity集合中删除barTypeAs对象然后保存FooObject,则应从基础数据库中删除已删除的BarTypeAEntity

@OneToMany( cascade = CascadeType.ALL, fetch = FetchType.LAZY, 
              mappedBy = "barEntity", targetEntity = BarTypeAEntity.class,
              orphanRemoval = true )

private List<BarTypeAEntity> barTypeAs;

为更新做这样的事情

foo.getBarTypeAs().clear();
foo.getBarTypeAs().add(new BarTypeAEntity());