QueryProjection与List作为参数之一

时间:2016-05-12 22:32:08

标签: java hibernate querydsl

我正在为以下域模型编写查询

@QueryEntity
public class Person
{
   ...
   private String name;
   private List<String> addresses;
   ...
}

我希望将查询结果返回给我一个人的代表,因为有太多其他字段我不关心。

public class PersonRepresentation
{
    private string name;
    private List<String> addresses;

    @QueryProjection
    public PersonRepresentation(String name, List<String> addresses){
        this.name = name;
        this.addresses = addresses;
    }
    ...
}

当我尝试创建我的JPA查询时

private final QPersonRepresentation qPersonRepresentationProjection = new QPersonRepresentation(
                qPerson.name,
                qPerson.addresses
        );

    List<PersonRepresentation> result = new JPAQuery(em)
                    .from(qPerson)
                    .list(qPersonRepresentationProjection);

我收到以下错误:

  

java.lang.IllegalArgumentException:org.hibernate.QueryException:not   实体[select person.name,   来自的人   com.example.foo.Person person]

     

在   org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1750)     在   org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677)     在   org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1683)     在   org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:331)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:498)

     

...

我已经对github上的文档和测试进行了扫描,到目前为止还无法找到我无法执行此查询的原因。

0 个答案:

没有答案