hibernate - 限制 JPA/Hibernate 中列表获取数据的首选方法是什么?

标签 hibernate jpa

我正在尝试找出仅加载显示数百行的 ListView 的某些属性的正确方法。

例如,想象一个 Person 实体,它有很多属性,但我只想获取列表的名字和姓氏。

使用 Hibernate/JPA 实现这一目标的最佳方法是什么?

A)我是否应该安排我的实体,以便它们仅包含一些属性,其余属性位于使用一对一关系的单独实体(和表)中?

B) 我应该使用 Hibernate 的惰性属性获取吗?甚至手册上都说它“主要是一种营销功能”?

C)还有其他方法可以做到这一点吗?

最佳答案

您可以使用 JPQL NEW 运算符。 您可以创建一些 DTO 对象并在 JPQL 查询中初始化它:

public class PersonDTO {

   private String firstName;
   private String surname;

   public PersonDTO(String firstName, String surname) {
      this.firstName = firstName;
      this.surname = surname;
   }

   // getters setters

}

Select NEW PersonDTO(p.firstName, p.surname) From Person p;

关于hibernate - 限制 JPA/Hibernate 中列表获取数据的首选方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15256405/

相关文章:

java.lang.IllegalArgumentException : The given string value: { "In last 7 days" : 19 } cannot be transformed to Json object

java - 如何使用 Spring/JPA/Hibernate 使用初始数据填充 Java (Web) 应用程序

java - 使用 JPA/Hibernate/MySQL 测试 JTA XA 分布式事务

java - hibernate -JPA : foreign key not set in ManyToOne relationship

java - 转换日期时出现异常

java - QueryDSL 关系排序为空

java - 错误: column "publish_date" is of type date but expression is of type bytea

java - 滚动时使用 Session.save() 时,可滚动 ResultSet.next() 逐渐减慢

java - Hibernate 在查找时调用 flush- 导致 not-null 错误

java - 如何序列化一组枚举?