나는 A를 만들거나 업데이트 할 때까지 명령문을 실행하지 않고 추가/제거하고 싶습니다. 가능합니까?
현재로서는이 방법이 없습니다. lazy-loaded 콜렉션은 항목 자체를 저장하지 않기 때문에 나중에 캐싱 변경 사항을 적용 할 수 없다.
그러나 독자적으로 할 수 있습니다. 엔티티의 항목 목록을 유지 한 다음 dao.create(...)
및 dao.update(...)
메서드를 재정 의하여 특별한 컬렉션에 캐시 된 항목이있는 경우 collection.addAll(...)
으로 호출 할 수 있습니다.
@Override
public int create(ParentItem parent) throws SQLException {
if (parent.getForeignItemsToAdd() != null) {
parent.getForeignItems().addAll(parent.getForeignItemsToAdd());
}
return super.create(parent);
}
:
private List<Item> foreignItemsToAdd;
...
private void addForeignItem(Item item) {
if (foreignItemsToAdd == null) {
foreignItemsToAdd = new ArrayList<Item>();
}
}
그런 다음 DAO는 같은 것을 할 것이다