我正在尝试将原生SQL查询转换为使用JPA2.0中的Criteria API。我在Google上找到了很多Criteria API的例子,但我真的很难把所有的东西放在一起。我希望一个更有经验的人能帮助我。原生查询如下所示:
select
sum(amount) from firstTable, secondTable
where firstTable.id = secondTable.id
and amount <> 0
and firstTable.id = ?
union all
select
sum(amount) from firstTable, thirdTable
where firstTable.id = thirdTable.id
and amount <> 0
and firstTable.id = ?原始查询结果集返回一个BigDecimal对象列表。
谢谢!
发布于 2012-02-02 22:18:21
JPA不支持UNION,要么使用原生SQL查询,要么执行两个查询。
发布于 2012-08-27 19:30:23
对不起,下面的示例不是,而是一个连接。
我会考虑使用具有多个根的查询。
这是Hiberante开发人员指南的一部分,代码与JPA 2.0兼容。
标准查询可以定义多个根,其效果是在新添加的根和其他根之间创建笛卡尔乘积。下面是一个匹配所有单身男性和所有单身女性的例子:
CriteriaQuery query = builder.createQuery();
Root<Person> men = query.from( Person.class );
Root<Person> women = query.from( Person.class );
Predicate menRestriction = builder.and(
builder.equal( men.get( Person_.gender ), Gender.MALE ),
builder.equal( men.get( Person_.relationshipStatus ), RelationshipStatus.SINGLE )
);
Predicate womenRestriction = builder.and(
builder.equal( women.get( Person_.gender ), Gender.FEMALE ),
builder.equal( women.get( Person_.relationshipStatus ), RelationshipStatus.SINGLE )
);
query.where( builder.and( menRestriction, womenRestriction ) )发布于 2012-10-31 19:13:05
如果您需要Union All,那么在我看来,有两个实体可以对它们应用继承。
https://stackoverflow.com/questions/9104989
复制相似问题