我正在为以下域模型编写查询
@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上的文档和测试进行了扫描,到目前为止还无法找到我无法执行此查询的原因。