>  Q&A  >  본문

java - JPA 中自定义对象和原生对象属性名不一致怎么解决?

有如下段代码 其中person是jpa的entity对象,personResult是自定义对象

@Query(select new com.xx.yy.PersonResult(p.id,p.name,p.age) from Person p)
 List<PersonResult> findPersonResult();

这样执行是可以的,但是如果我其中的personResult对象中的id是叫personId,上面的代码该如何改?

我用过

@Query(select new com.xx.yy.PersonResult(p.id as personId,p.name,p.age) from Person p)
 List<PersonResult> findPersonResult();

会报错,是不是jpql new对象的时候不支持别名吗?

PHPzPHPz2742일 전550

모든 응답(1)나는 대답할 것이다

  • 阿神

    阿神2017-04-18 10:58:49

    귀하의 코드

    으아악

    as만 제거하면 됩니다. jpa에서는 이 구문을 지원하지 않습니다.



    귀하의 질문에 대해: 엔터티의 다른 이름과 사용자 정의된 클래스 속성에 대해 걱정할 필요가 없습니다. select new xx.xx.PersonResult(p.id,p.name.p.age) 语法时,jpa不会关心真实的字段叫什么名字,只要字段类型一致就可以了,因为这里采用是Java的构造函数。调用构造函数时只需要关心需要传入几个参数以及参数的类型

    을 사용하세요.

    제 코드를 보시면 좀 더 직관적이실 겁니다

    으아악

    AnnotherPerson 생성자

    으아악

    회신하다
    0
  • 취소회신하다