亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

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

瀏覽:104日期: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久久小草 | 精品大臿蕉视频在线观看 | 欧美一级毛片免费观看视频 | 大杳蕉精品视频在线观看 | 一a一片一级一片啪啪 | 涩色在线| 亚洲国产观看 | 国产视频 一区二区 | 欧美特黄三级成人 | 欧美黄色片 一级片 | 国内精品在线观看视频 | 国产 欧美 日产久久 | 韩国成人在线视频 | 中国高清性色生活片 | 日韩精品一级毛片 | 99久久久久国产精品免费 | 免费一级毛片在线播放 | 国产成人精品一区二区不卡 | se视频在线观看 | 国产精品视频二区不卡 | 成人午夜精品视频在线观看 | 国产一区二区三区欧美精品 | 亚洲经典一区 | 啪啪午夜视频 | 91香蕉福利一区二区三区 | 爱久久久国产精品 | 欧美一级专区免费大片俄罗斯 | 天天做天天爱天天影视综合 | 99精品视频一区在线视频免费观看 | 在线播放交视频 | 成人三级做爰在线观看男女 | 国产日韩精品一区二区在线观看播放 | 国产激情一级毛片久久久 | 欧美特黄一级大片 |