open jpa 集合查询的问题
qybao 2009-04-09 10:04:45 比如有2个entity
class A {
private List<B> bs;
}
Class B {
}
即A表有个子表B
用JQL查询时,如何把满足条件的A,B同时返回
如果是
select a, b from A a, In(a.bs) b where xxx
这样的话,当子表信息不存在时,jpa没法构建b对象,所以会出错
用join, left fetch join都不行
我想得到的结果当子表B的信息不存在时,b返回的是null对象
但是jpa没法把null转化为B对象,所以不行
如果是
select a, a.bs from A a, In(a.bs) b where xxx
这样的话,jpa会提示查询中不能出现集合类型的错误
当然,如果是
select a from A a, In(a.bs) b where xxx
检索出a后再调用a.getBs(),是可以的,但这时返回的B子表的信息条件就不能限制了
因为这时a.getBs将返回所有跟A关联的子表B的信息
如果我只想返回符合我想要的条件的部分子表B的信息,该怎么做
总不能让我遍历a.getBs,然后一条一条判断条件吧
有什么方法一次性用JQL就能一次取出符合条件的信息?
如果用原生SQL,又如果在结果中构建A,B对象?