午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

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

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

瀏覽:219日期: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免费看 | 涩五月婷婷 | 亚洲精品1| 天天干天天干天天干 | 日日干日日插 | 日韩亚洲欧美在线观看 | 国产欧美日韩视频 | 五月婷婷色 | 日韩色网 | 日韩在线91 | 成人精品福利视频 | 国产成人自拍视频在线观看 | 香蕉福利视频 | 97国产精品久久 | 撸av | 久久成人免费视频 | 五月婷在线观看 | 五月婷在线观看 | 欧美日韩综合在线观看 | 国产视频福利 | 在线观看日批视频 | 黄色大片视频网站 | 日本一本不卡 | 精品91视频| 中国美女黄色一级片 | 中文字幕视频网 | 99er这里只有精品 | 91色中文| 色悠久久久| 奇米网狠狠干 | 一级欧美片 | 精品一区av| 中文字幕第18页 | 亚洲天堂2024 | 日本欧美亚洲 | 奇米第四色7777 | 国产视频福利 |