色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

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

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

瀏覽:130日期: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
相關文章:
主站蜘蛛池模板: 久久999视频 | 欧美国产合集在线视频 | 99亚洲自拍| 欧美精品人爱a欧美精品 | 国产成人精品久久亚洲高清不卡 | 精品一区二区高清在线观看 | 欧美一级xxxx俄罗斯一级 | 国产欧美日韩精品a在线观看 | 国产三级精品美女三级 | a级毛片毛片免费观看久潮喷 | 欧美精品午夜毛片免费看 | 日韩精品亚洲人成在线观看 | 女初高中福利视频在线观看 | 久久久久久国产视频 | 成人国产亚洲欧美成人综合网 | 成人性免费视频 | 久99频这里只精品23热 视频 | 精品国产亚洲一区二区三区 | 亚洲aa| 国产在线观看免费 | 99久久综合给久久精品 | 精品国产自 | 丝袜美腿精品一区二区三 | 国产在线不卡午夜精品2021 | 久久成人亚洲 | 精品久久久在线观看 | 国产成人一区二区视频在线观看 | 手机看片神马午夜 | 亚洲天堂网在线观看视频 | 2022国产91精品久久久久久 | 国产亚洲人成a在线v网站 | 免费看特黄特黄欧美大片 | 亚洲成aⅴ人在线观看 | 日本一区午夜爱爱 | 久久在线免费视频 | 国产精品线在线精品 | 亚洲国产综合久久精品 | aa日本| 毛片b| 波多野结衣在线观看高清免费资源 | 亚洲第一网站免费视频 |