我对何时以及何时不使用 JPA 2.0 中的本机查询感到非常困惑。我的印象是使用本机查询可能会导致我与 JPA 缓存不同步。如果我可以使用 JPQL 或 CriteriaBuilder 查询完成同样的事情,那么是否有充分的理由使用本机查询?同样,如果我可以使用 JPQL 或 CriteriaBuilder 完成同样的事情,使用本机查询是否有任何危险?最后,如果使用本机查询存在与 JPA 缓存不同步的危险,那么在使用 JPQL 或 CriteriaBuilder 执行等效查询时是否存在同样的危险?
我的理念是确实避免本地查询,但肯定有些时候它们是必要的。在我看来,如果我可以使用 JPQL 或 CriteriaBuilder 来做到这一点,那么我应该这样做。
谢谢。