首页 > 解决方案 > 在 JPA 中获取单列值

问题描述

我想从 JPA 中的特定列中获取所有值并将所有值存储到一个列表中。目前,我正在使用以下方法,但我正在获取其他格式的记录。有人可以帮助我吗

Query q1 = factory.createNativeQuery("select * from booking_attendee where booking_id="+id);
List<String> em1=q1.getResultList();
return em1;
query otput
em=[[Ljava.lang.Object;@68606667, [Ljava.lang.Object;@2cd7f99a, [Ljava.lang.Object;@137a5a5, [Ljava.lang.Object;@a45cc1c, [Ljava.lang.Object;@61fdc06d, [Ljava.lang.Object;@72f5eee1, [Ljava.lang.Object;@4e536797]

标签: javamysqlhibernatejpa

解决方案


如果你想为此创建一个本机查询,更多的是关于如何在 SQL 中解决这个问题。你不说SELECT *这意味着所有的列。你不得不说SELECT your_column_name只选择一个特定的列。

Query q1 = factory.createNativeQuery("SELECT your_column FROM booking_attendee");
List<String> em1 = q1.getResultList();

WHERE子句可以并且应该使用 JPA 的参数绑定来定义。在性能和 SQL 注入方面有几个优点。

命名参数绑定对于持久性提供者来说是特殊的(例如 Hibernate)。JPA 的常用方法是?让您的代码可移植到其他提供程序。

Query q1 = factory.createNativeQuery("SELECT your_column FROM booking_attendee b WHERE b.booking_id = ?");
q1.setParameter(1, id);
List<String> em1 = q1.getResultList();

本机查询提供了使用原始 SQL 的可能性。像这样,某些特定于您的数据库的功能可以与此一起使用。不过,如果您没有非常具体的 SQL 代码,您还应该查看 JPQL(JPA 的特定查询语言)和 JPA Criteria API,它在您想要重构代码时提供优势,在编译时显示错误和使查询的动态创建更容易。


推荐阅读