Мені хотілося б дізнатися, що є правильним способом усунути дитину від стосунку «один до багатьох» у GWT за допомогою RequestFactory.
Моя програма GWT з юридичною особою називається Продукт і цей продукт має відношення до багатьох Експерт:
@Entity
public class Product {
...
OneToMany(mappedBy="product", orphanRemoval=true,
cascade={CascadeType.DETACH,CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH},fetch=FetchType.EAGER)
Set<Expert> experts = new HashSet<Expert>();
...
}
@Entity(name = "EXPERT")
public class Expert {
...
@ManyToOne(optional=false)
Product product;
...
}
У мене є інтерфейс користувача, де ви можете змінити деякізначення продукту, але також вікно, де фахівці можуть бути додані або видалені. Додавання експерта йде добре, але як видалити експерта? І що адміністрацію потрібно робити на стороні клієнта та сервера?
У мене вже відкритий запит на продукт.
Відповіді:
0 для відповіді № 1Я також відповів на ваше питання JPA.
Базуючись на моєму минулому досвіді, видалити дитину у двонаправлені стосунки батько-дитина у сплячому режимі може бути дуже хитро.
Зазвичай я використовую односпрямоване картографування, тобто продукт не має набору експертів. Але ви можете реалізувати геттер, щоб отримати всіх експертів, які використовують дзвінок у сплячому режимі. Перевагами є:
- полегшення карти
- простіше кодування
- керована поведінка
Ви завжди можете повернутися та застосувати кешування чи прагнення добирати його на більш пізньому етапі. І більшу частину часу вони є непотрібними передзрілою оптимізацією.