关于何时以及何时不在JPA 2.0中使用本机查询,我感到非常困惑.我的印象是使用本机查询可能会导致我与JPA缓存不同步.如果我可以使用JPQL或CriteriaBuilder查询完成同样的事情,是否有充分的理由使用本机查询?同样,如果我可以使用JPQL或CriteriaBuilder完成同样的事情,那么使用本机查询是否有任何危险?最后,如果使用本机查询存在危险,与JPA缓存不同步,使用JPQL或CriteriaBuilder执行等效查询是否存在同样的危险?
我的理念是避免本地查询,但肯定有时候它们是必要的.在我看来,如果我可以使用JPQL或CriteriaBuilder,那么我应该.
谢谢.
我试图转换本机SQL查询以使用JPA 2.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 = ?
Run Code Online (Sandbox Code Playgroud)
原始查询结果集返回一个BigDecimal对象列表.
谢谢!