JPA中原生查询的字段值

2024-02-07

如何获取本机查询(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(使用前将#替换为@)

JPA中原生查询的字段值 的相关文章

随机推荐