Java Spring JPA标准生成器特定列

Java Spring JPA标准生成器特定列,java,hibernate,spring-boot,jpa,Java,Hibernate,Spring Boot,Jpa,我正在使用JPA criteria builder查询数据库中的记录。但是,我希望使用JPA criteria API从表中返回特定列 目前,我的实现返回完整的对象。但是,我只想返回特定的列,这些列可以是动态的下面的代码将查询Person表并返回Person的完整对象。 CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Person> query = cb.createQuery(Person.cl

我正在使用JPA criteria builder查询数据库中的记录。但是,我希望使用JPA criteria API从表中返回特定列

目前,我的实现返回完整的对象。但是,我只想返回特定的列,这些列可以是动态的下面的代码将查询Person表并返回Person的完整对象。

    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Person> query = cb.createQuery(Person.class);
    Root<Person> root = query.from(Person.class);
    query.select(cb.equal(root.get("id"), 1));

    TypedQuery<Person> result = em.createQuery(query);
    List<Person> personList = result.getResultList();
创建一个单独的小型人员类别是不可行的。以前有没有人解决过这样的问题,或者如果能解决我的问题,请你建议另一种方法

编辑

如中所述

如果条件查询的类型是某个用户定义类X的CriteriaQuery(即,通过将X类参数传递给createQuery方法创建的条件查询对象),传递给multiselect方法的列表元素将被传递给X构造函数,并且为每一行返回一个类型为X的实例

如果我使用multiselect方法并使用PersonMini类,那么我需要为每个字段组合使用构造函数。因为字段的选择是由用户完成的。字段的选择不是静态的

假设,在PersonMini类中,我有3个字段。然后用户可以选择Id和Name、Name和City、City(单独)、Id(单独)、Id和City。对于每个组合,我都需要构造函数,否则它将在运行时抛出错误


对于两个三个字段,使用不同的构造函数组合是可行的,但对于15-20个字段则不可行

@JBNizet我在你引用的链接中看不到任何解决方案。目前,我使用的是同一个类CritriaBuilder。抱歉,链接错误@谢谢你的评论。你是对的,我可以使用multiselect(ListSo什么?这意味着你必须根据用户选择的内容创建要传递给multiselect()的选择列表。如果你正在寻找一个名为“guessWhatTheUserWantsToSelectAndDoItForMe()的神奇方法”,很抱歉,它不存在。您必须自己编写一些代码。@JBNizet否。您不清楚我的问题。我知道如何在方法中传递用户选定的列。
class PersonMini {
     private long id;
     private String name;
     // .. constructor and getter/setter
}