検索

ホームページ  >  に質問  >  本文

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对象的时候不支持别名吗?

PHPzPHPz2804日前581

全員に返信(1)返信します

  • 阿神

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

    あなたのコード

    リーリー

    as を削除するだけです。jpa はこの構文をサポートしていません。 as去掉就可以了,jpa是不支持这种语法的。



    关于你的问题:Entity 和你自定义的类属性名称不一样的问题,你大可不必担心,使用select new xx.xx.PersonResult(p.id,p.name.p.age) 语法时,jpa不会关心真实的字段叫什么名字,只要字段类型一致就可以了,因为这里采用是Java的构造函数。调用构造函数时只需要关心需要传入几个参数以及参数的类型 <時間> <時間>

    質問について: エンティティのさまざまな名前とカスタマイズされたクラス属性について心配する必要はありません。 select new xx.xx.personResult(p.id,p.name.p.age) を使用してください。ここでは Java コンストラクターが使用されているため、構文の点で、フィールドの型が一貫している限り、jpa は実際のフィールドの名前を気にしません。コンストラクターを呼び出すときは、渡す必要があるパラメーターの数とパラメーターの型のみを考慮する必要があります。

    私のコードを見てください、より直感的になるでしょう

    リーリー

    Anotherpersonのコンストラクター🎜 リーリー

    返事
    0
  • キャンセル返事