我發展我的項目,將在數據庫中更新實體的服務器端邏輯。但是這個實體參考了另一個實體的列表。更新數據庫時,某些條目被拆除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」嗎? –