У меня проблема с JPA 1.0 (OpenJPA)
Следующая ситуация
@Entity
public class A{
private Long aId;
private List<B> bEntities;
//myId getter and setter
@OneToMany(mappedBy="referencedA")
public List<B> getBEntities(){
return bEntities;
}
public void setBEntities(List<B> bEntities){
this.bEntities = bEntities;
}
}
@Entitiy
public class B{
private Long bId;
private Long aId;
private A referencedA;
//aId/bId getter and setter
@ManyToOne
@JoinColumn(name="A_ID", referencedColumnName="A_ID")
public A getReferencedA(){
return referencedA;
}
public void setReferencedA(A referencedA){
this.referencedA = referencedA;
}
}
Если я выполняю следующий JPQL-запрос, он работает как положено, то есть каждый атрибут заполнен:
select object(o) from B o
Но если я хочу получить все как:
select object(o) from A o
и я пытаюсь получить B-список через aReceivedAObject.getBEntities (); он возвращает ноль.
Если я изменю или вернее добавлю аннотацию OneToMany следующим образом:
@OneToMany(mappedBy="referencedA", fetch=FetchType.EAGER)
все работает как положено.
НО мне нужна ленивая загрузка, потому что все остальное будет слишком медленным.
Я действительно надеюсь, что кто-то может помочь мне решить проблему, так как я застрял в ней на три дня :(
Примечания, если важно:
Я (должен) использовать Websphere 6.1 (с Feature-Pack для EJB 3.0), который использует OpenJPA 1.0. Так что это проект JavaEE.
Насколько я понял OpenJPA-Doc, мне нужно включить расширение, что я и сделал, как описано здесь http://www.ibm.com/developerworks/websphere/techjournal/0612_barcia/0612_barcia.html#sec4f
Но, похоже, это не имеет значения :(
Заранее спасибо !!!
С уважением,
asotbb
// edit: исправлена опечатка: изменено "public List getBEntities ()" на "public List getBEntities ()"