久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

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

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

瀏覽:134日期: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
相關文章:
主站蜘蛛池模板: 久久九九 | 欧美日韩干 | 成人高清视频免费观看 | 一区二区在线视频 | 亚洲一区二区三区在线免费观看 | 国产精品美女视频免费观看软件 | 国产区一区 | 黄色片网站在线看 | 干干日日 | 91在线视频播放 | 91麻豆精品国产91久久久久久 | 伊人久久国产 | 日韩精品一91爱爱 | 少妇性l交大片免费一 | 欲色av| jizzjizzjizz亚洲女 | 欧美aaaaa| 天堂av中文在线 | 91高清免费| 露娜同人18av黄漫网站 | 国内精品视频一区二区三区八戒 | 日韩精品中文字幕在线播放 | 无码日韩精品一区二区免费 | 国产精品黄网站在线观看 | 久久精品在线 | 午夜影院a | 成人免费视频观看视频 | 中文字幕精品视频在线观看 | 婷婷丁香激情网 | 99热影院 | 亚洲国产精品精华液网站 | 国产精品色一区二区三区 | 久久综合成人精品亚洲另类欧美 | 国内精品视频一区二区三区 | 99久久视频 | 国产在线欧美 | 亚洲高清视频在线 | 亚洲香蕉精品 | 九九热在线观看 | 天天操夜夜操av | 狠狠干美女 |