Chciałbym wiedzieć, jaki jest właściwy sposób usunięcia dziecka z relacji jeden-do-wielu w GWT przy użyciu fabryki żądań.
Moja aplikacja GWT z wywoływanym podmiotem Produkt i ten produkt ma relację jeden do wielu Ekspert:
@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;
...
}
Mam interfejs użytkownika, w którym możesz zmienić niektórewartości produktu, ale także okno, w którym można dodawać lub usuwać ekspertów. Dodanie eksperta idzie dobrze, ale jak usunąć eksperta? A jaką administrację muszę wykonać po stronie klienta i serwera?
Mam już otwarty produktRequest.
Odpowiedzi:
0 dla odpowiedzi № 1Odpowiedziałem również na twoje pytanie WZP.
Opierając się na moich wcześniejszych doświadczeniach, usunięcie dziecka w dwukierunkowej relacji rodzic-dziecko w Hibernate może być bardzo trudne.
Zwykle używam mapowania jednokierunkowego, tzn. Produkt nie posiada zestawu ekspertów. Ale możesz zaimplementować gettera, aby uzyskać wszystkich ekspertów korzystających z wywołania Hibernate. Zalety to:
- łatwiejsze mapowanie
- łatwiejsze kodowanie
- zarządzalne zachowanie
Zawsze możesz wrócić i zaimplementować buforowanie lub szybkie pobieranie na późniejszym etapie. A przez większość czasu są niepotrzebną optymalizacją przed dojrzałością.