av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

java - JPA 中自定義對象和原生對象屬性名不一致怎么解決?

瀏覽:144日期:2023-12-19 13:38:49

問題描述

有如下段代碼 其中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對象的時候不支持別名嗎?

問題解答

回答1:

你的代碼

@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;}

標簽: java
相關文章:
主站蜘蛛池模板: 亚洲成av人片在线观看无码 | 99国产精品视频免费观看一公开 | 久色激情 | 日韩中文字幕一区 | 久久99精品久久久久蜜桃tv | 国产日韩欧美 | 日本成人中文字幕在线观看 | 亚洲国产一区视频 | 久热精品在线播放 | 日韩欧美精品一区 | 国产精品大片在线观看 | 免费一二区| 亚洲情综合五月天 | 亚洲视频www | 国产精品成人一区二区三区 | 91私密视频| 美日韩一区二区 | 91综合网| 亚洲欧美第一视频 | 综合色婷婷 | 亚洲第1页 | 日韩小视频在线 | 日本精品一区二区 | 久久精品久久久 | www.中文字幕 | av入口| 精品无码久久久久久国产 | 中文字幕在线视频精品 | 99久久婷婷国产综合精品电影 | 狠狠的干狠狠的操 | 日韩中文在线观看 | 午夜视频免费在线观看 | 久久久精品一区二区三区 | 精品美女久久久 | 中文字幕在线一区二区三区 | 国产精品一区二区在线 | 国产乱码精品一区二区三区av | 色嗨嗨| 欧美一级久久 | 亚洲第一成年免费网站 | 免费毛片在线 |