【问题标题】:fetching single column values in JPA在 JPA 中获取单列值
【发布时间】:2019-10-29 10:34:00
【问题描述】:

我想从 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]

【问题讨论】:

  • 你想从booking_attendee表中选择哪一列?

标签: java mysql hibernate jpa


【解决方案1】:

如果你想为此创建一个原生查询,更多的是关于如何在 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,它在您想要重构代码时提供优势,在编译时显示错误和使查询的动态创建更容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多