Я считаю, что это распространенный сценарий. Скажем, у меня есть отображение один-много в hibernate: Category
имеет много Items
Категория:
@OneToMany(
cascade = {CascadeType.ALL},fetch = FetchType.LAZY)
@JoinColumn(name="category_id")
@Cascade(
value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN
)
private List<Item> items;
Пункт:
@ManyToOne(targetEntity=Category.class,fetch=FetchType.EAGER)
@JoinColumn(name="category_id",insertable=false,updatable=false)
private Category category;
Все отлично работает. Я использую Category
, чтобы полностью контролировать жизненный цикл Item
. Но когда я пишу код для обновления Category
, сначала я получаю Category
из БД. Затем передайте его в UI. Пользователь заполняет измененные значения для Category
и передает обратно. Здесь возникает проблема: поскольку я передаю только информацию Category
, а не Items
, коллекция Items
будет пустой. Когда я позвоню saveOrUpdate
, это очистит все ассоциации.
Любое предложение о том, что лучше для решения этой проблемы? Я думаю, что преимущество Category
, управляющего Items
, состоит в том, что он легко вводит порядок Items
и не путает двунаправленный текст.
А как насчет ситуации, которую вы хотите просто обновить Category
? Загрузите это сначала и объедините?