複数の「部屋」を含む「家」というエンティティがあり、次のように設定されています。
House.java:
@Entity
public class House {
@OneToMany(mappedBy = "house", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Item> rooms;
...
}
Room.java:
@Entity
public class Room {
@ManyToOne
@JoinColumn(name = "houseId")
private House house;
...
}
ここで、エンティティ マネージャーを介して部屋を直接削除しても、部屋は削除されません。
getEntityManager().contains(room); // returns true
getEntityManager().remove(room);
getEntityManager().flush();
コレクションから削除すると、削除されます。
house.getRooms().remove(room);
getEntityManager().persist();
getEntityManager().flush();
誰でもこの動作を説明できますか? ありがとう!