我在使用JPA时遇到了一些问题。请考虑以下情况:
表A(id_a) | 表B(id_b,id_a)
我需要的是这样的查询:
Select a.*, c.quantity from A as a, (Select Count(*) as quantity
from B as b where b.id_a = a.id_a) as c;
问题是我想使用jpa查询而不是本机查询,如下所示:
Select a, c FROM A a, (Select Count(b) FROM B b where a.idA = b.a.idA) c;
那么我可以从结果中迭代(每个节点中带有a和c的Object []列表)然后分配a.quantity = c;
我再说一遍,我不想使用本机查询,但我找不到使用冗余数据的其他方法,并在A中添加另一个名为Quantity的列,每次从B插入和删除时,在A中更新此列
请帮助,我在某处读到JPA不接受Form子句中的子查询,那么,我该怎么办?
非常感谢!
答案 0 :(得分:2)
JPA不支持FROM子句中的子选择,但EclipseLink 2.4当前里程碑版本确实有这种支持。
您可以使用普通连接重写查询。
可能,
Select a, size(a.bs) from A a
或
Select a, count(b) from A a join a.bs b group by a