我发展我的项目,将在数据库中更新实体的服务器端逻辑。但是这个实体参考了另一个实体的列表。更新数据库时,某些条目被拆除JPA
所以,比如我有一个实体Test
像这样的:
@Entity
public class Test {
@Id
@Column(name = "idTest", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
@OneToMany(mappedBy = "idTest", targetEntity = Test2.class, fetch = FetchType.LAZY)
private Collection<Test2> test2Collection;
}
其具有Test2
实体引用。
@Entity
public class Test2 {
@Id
@Column(name = "idTest2", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String field1;
private String field2;
@ManyToOne
@JoinColumn(name = "idTest", referencedColumnName = "idTest")
private Test idTest;
}
就我而言,我更新的集合Test
进入test2Collection
,最终我取出它的一些Test2
条目。
从EntityManager
简单merge
方法没有检测到一些条目已被删除,当我称它通过新的更新Test
条目。
我正在考虑通过Test
条目之间的差异来跟踪从test2Collection
中删除的条目,然后再更新数据库和新的Test
条目进行更新。
但我不知道这是这样做的唯一的(和最佳)的方式。任何人有另一个想法?
难道你不需要例如OneToMany上的“cascade = CascadeType.ALL”吗? –