Я разрабатываю логику на стороне сервера моего проекта, которая будет обновлять Entity в базе данных. Но этот объект имеет ссылку на список другого объекта.Обновление базы данных при удалении некоторых записей 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.
@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;
}
В моем случае, я обновляя коллекции test2Collection
из Test
записи и в конце концов я извлекая некоторые из Test2
записей о нем.
Простой метод merge
от EntityManager
не обнаруживает, что некоторые записи были удалены, когда я вызываю это, передавая новую обновленную запись Test
.
Я думал отслеживать удаленные записи от test2Collection
, сделав разницу между записью Test
перед обновлением базы данных новой записью Test
, подлежащей обновлению.
Но я не уверен, что это единственный (и лучший) способ сделать это. У кого-то еще есть другая идея?
Вам не нужно, например, «cascade = CascadeType.ALL» на OneToMany? –