JPA 1.0 的 TypedQuery 等效项

Posted

技术标签:

【中文标题】JPA 1.0 的 TypedQuery 等效项【英文标题】:TypedQuery equivalent for JPA 1.0 【发布时间】:2011-05-25 04:49:46 【问题描述】:

我对 JPA 很陌生,我正在使用 Apress JPA2 教科书来学习它。我试图从书中做第一个例子。下面这行代码给了我一个错误:

TypedQuery query = em.createQuery("SELECT e FROM Employee e", Employee.class);

说 TypedQuery 无法解析为类型。经过一段时间的努力,我意识到我使用的是 JPA 版本 1,它不包含 TypedQuery,而只是 Query 接口。

我的问题是 JPA 版本 1 中是否有等效声明。请帮助。提前致谢。

【问题讨论】:

【参考方案1】:

由于 TypedQuery 是从 JPA-2.0 引入的,所以必须使用 Query 接口。

1) 为查询映射结果类型的原生查询(失去可移植性)。

Query selectQuery = entityManager.createNativeQuery("SELECT
 e FROM Employee e", Employee.class);

2) 创建查询,然后将其显式转换为结果类型(更可取)。

Query selectQuery = entityManager.createQuery("SELECT e FROM Employee e")
List<Employee> employees = (List<Employee>)selectQuery.getResultList(); //Multiple Result
Employee employee = (Employee)selectQuery.getSingleResult(); //Single Result

【讨论】:

以上是关于JPA 1.0 的 TypedQuery 等效项的主要内容,如果未能解决你的问题,请参考以下文章

java 使用jpa参数+ TypedQuery进行示例搜索查询并继承常见的crud操作

TypedQuery<String> 上的 NullPointerException -- JavaEE Spring JPA2.1

JPQL typedquery 中 IN 子句的解析

C# 的默认值(T)的 VB 等效项

正则表达式 '\b' 的 T-SQL 等效项

JPQL 中的 timestampdiff 等效项(不使用标准)