Не может сохраняться сущность с ленивыми загрузочными элементами - PullRequest
0 голосов
/ 03 декабря 2010

У меня есть сущности

@Entity public class A implements Serializable {
    @OneToMany(mappedBy = "a", fetch = FetchType.LAZY)
    private List<B> bList;
}

@Entity public class B implements Serializable{
    @JoinColumn(name = "A_ID", referencedColumnName = "ID")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private A a;

    @JoinColumn(name = "C_ID", referencedColumnName = "ID", nullable = false)
    @OneToOne(cascade = CascadeType.ALL, optional = false, fetch = FetchType.EAGER)
    private C c;
}

@Entity public class C implements Serializable {
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "c", fetch = FetchType.EAGER)
    private B b;
}

если я передаю сущность B методу ejb от удаленного клиента, тогда сущность, передаваемая на сервер приложений, равна NULL;Если я изменю ленивую загрузку на EAGER, то все идет хорошо.Я не хочу использовать загрузку EAGER, как избежать загрузки EAGER?

1 Ответ

0 голосов
/ 03 декабря 2010

Единственный способ сохранить экземпляр типа B, полученный от удаленного клиента, - восстановить состояние его потомков из старой копии и затем сохранить.

public B updateFromRemote(B b) {
   B oldCopy = bDao.findBById(b.getId());
   b.setA(oldCopy.getA());
   b.setC(oldCopy.getC());
   return bDao.save(b);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...