我对 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-Query 它会按预期工作,这意味着每个属性都已填充:
select object(o) from B o
但是,如果我想全部作为:
select object(o) from A o
我尝试通过 aReceivedAObject.getBEntities(); 它返回空值。
如果我更改或扩展 OneToMany 注释,如下所示:
@OneToMany(mappedBy="referencedA", fetch=FetchType.EAGER)
一切都按预期工作。
但我需要延迟获取,因为其他一切都太慢了。
我真的希望有人可以帮助我解决这个问题,因为我已经坚持了三天了:(
注意,如果它很重要:
我(必须)使用 Websphere 6.1(带有 EJB 3.0 的 Feature-Pack),它使用 OpenJPA 1.0。所以这是一个JavaEE项目。
据我了解 OpenJPA-Doc 我需要启用增强功能,我已经按照此处所述进行了http://www.ibm.com/developerworks/websphere/techjournal/0612_barcia/0612_barcia.html#sec4f
但这没有t似乎有什么不同:(
提前致谢!!!
亲切的问候,
asotbb
//编辑:更正错字:将“public List getBEntities()”更改为“public List getBEntities()”