如何获取本机查询(JPA)中某些字段的值?
例如我想获取客户表的姓名和年龄:
Query q = em.createNativeQuery("SELECT name,age FROM customer WHERE id=...");
注意:我不想将结果映射到实体。我只想获取该字段的值。
Thanks
具有多个选择表达式的本机查询返回一个Object[]
(or List<Object[]>
)。从规格来看:
3.6.1 查询接口
...
Java 结果的元素
其 SELECT 子句的持久性查询
由多个选择组成
表达式的类型Object[]
。如果
SELECT 子句仅包含一个
选择表达式,其中的元素
查询结果是Object类型。什么时候
使用本机 SQL 查询,SQL
结果集映射(参见
3.6.6),确定有多少项(实体、标量值等)
回。如果有多个项目
返回,查询的元素
结果属于类型Object[]
。如果只有一个
由于以下原因而返回单个项目
SQL 结果集映射或者如果
指定结果类,则
查询结果的元素为
类型Object
.
因此,要获取示例中的姓名和年龄,您必须执行以下操作:
Query q = em.createNativeQuery("SELECT name,age FROM customer WHERE id = ?1");
q.setParameter(1, customerId);
Object[] result = (Object[])q.getSingleResult();
String name = result[0];
int age = result[1];
参考
- JPA 1.0 specification
- 第3.6.1节“查询接口”
- 第 3.6.6 节 “SQL 查询”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)