0

使用 JPA2.0(通过 Hibernate 4),我可以使用 EntityManager.find(java.lang.Class entityClass, java.lang.Object primaryKey) 在数据库中查询查询条件是主键的记录。但是如果查询条件不是主键(例如,选择所有城市值为“伦敦”的记录),我是否必须创建一个 TypedQuery 并显式提供 SQL 语句?有什么我应该采用的最佳实践吗?

4

1 回答 1

0

JPA Criteria API为您提供了构建自己的动态查询(使用 jpql 或 sql)无法获得的编译时安全级别。尤其是当很多条件开始出现时(可选字段、条件子查询……),很容易出错。

Criteria API 编写起来可能更复杂(尤其是对于简单查询),您需要围绕标准 API 创建一些管道代码,以使其成为真正动态且易于使用的语言。它并没有真正提供开箱即用的功能。

有些人喜欢使用 Criteria API,而另一些人则喜欢命名查询/JPQL。

于 2013-02-04T19:57:35.077 回答