你的代码
@Query(select new com.xx.yy.PersonResult(p.id as personId,p.name,p.age) from Person p)
List<PersonResult> findPersonResult();
你把as
去掉就可以了,jpa
是不支持这种语法的。
关于你的问题:Entity 和你自定义的类属性名称不一样的问题,你大可不必担心,使用select new xx.xx.PersonResult(p.id,p.name.p.age) 语法时,jpa不会关心真实的字段叫什么名字,只要字段类型一致就可以了,因为这里采用是Java的构造函数。调用构造函数时只需要关心需要传入几个参数以及参数的类型
看下我代码,这样会直观一点
@Query("select new com.zfxiao.pojo.AnnotherPerson(p.id,p.name,p.age) from Person p ")
List<AnnotherPerson> findAnnotherPerson()
AnnotherPerson的构造函数
public AnnotherPerson(Long personId, String name, Integer age) {
this.personId = personId;
this.name = name;
this.age = age;
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…