contenuti JPA a cascata Set
-
26-10-2019 - |
Domanda
Sapete perché questo:
class Owner {
@OneToMany(mappedBy = "owner",
cascade = CascadeType.ALL)
public Set<Storage> storages
...
class Storage {
@ManyToOne
public Owner owner
...
non funziona come previsto:
Storage s = new Storage("S1")
Owner o = new Owner("O1")
o.storages.add(s)
...
em.persistAndFlush(o)
...
s = Storage.get...
assert(s.owner != null, "Storage does not have an Owner")
o = Order.get...
assert(!o.storages.isEmpty, "Owner does not have any Storage")
Il test ha esito negativo:
[info] - Storage *** FAILED ***
[info] Storage does not have an Owner
Come posso risolvere il problema?
Soluzione
Questa domanda viene chiesto una volta ogni 2 giorni. JPA utilizza il lato possedere di un'associazione bidirezionale per sapere se esiste un'associazione. Il lato possedere è il lato dove c'è non di attributo mappedBy
. Così, per dire APP che esiste un'associazione tra il proprietario e lo stoccaggio, è necessario impostare il proprietario del magazzino:
s.setOwner(o);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow