JPA каскад Установить контент - PullRequest
1 голос
/ 10 января 2012

Знаете ли вы, почему это:

class Owner {
  @OneToMany(mappedBy = "owner",
    cascade = CascadeType.ALL)
  public Set<Storage> storages
  ...

class Storage {
  @ManyToOne
  public Owner owner
  ...

не работает должным образом:

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")

Тест не пройден:

[info] - Storage *** FAILED ***
[info]   Storage does not have an Owner

Как я могуисправить это?

1 Ответ

2 голосов
/ 10 января 2012

Этот вопрос задают раз в 2 дня.JPA использует сторону владения двунаправленной ассоциацией, чтобы узнать, существует ли ассоциация.Сторона-владелец - это сторона, где есть атрибут no mappedBy.Итак, чтобы сообщить JPA, что существует связь между владельцем и хранилищем, вы должны установить владельца хранилища:

s.setOwner(o);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...