国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:129日期: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();

這樣執(zhí)行是可以的,但是如果我其中的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是不支持這種語法的。

關(guān)于你的問題:Entity 和你自定義的類屬性名稱不一樣的問題,你大可不必擔心,使用select new xx.xx.PersonResult(p.id,p.name.p.age) 語法時,jpa不會關(guān)心真實的字段叫什么名字,只要字段類型一致就可以了,因為這里采用是Java的構(gòu)造函數(shù)。調(diào)用構(gòu)造函數(shù)時只需要關(guān)心需要傳入幾個參數(shù)以及參數(shù)的類型

看下我代碼,這樣會直觀一點

@Query('select new com.zfxiao.pojo.AnnotherPerson(p.id,p.name,p.age) from Person p ')List<AnnotherPerson> findAnnotherPerson()

AnnotherPerson的構(gòu)造函數(shù)

public AnnotherPerson(Long personId, String name, Integer age) { this.personId = personId; this.name = name; this.age = age;}

標簽: java
相關(guān)文章:
主站蜘蛛池模板: 淮南市| 轮台县| 乌兰浩特市| 岱山县| 新宁县| 沅江市| 灵丘县| 沂南县| 隆德县| 山东省| 盘锦市| 东乌珠穆沁旗| 蓬莱市| 丰宁| 七台河市| 宁晋县| 华亭县| 泰州市| 新宁县| 长沙县| 双桥区| 法库县| 合川市| 灵川县| 广宁县| 宁南县| 综艺| 丹寨县| 新晃| 福建省| 民县| 瓮安县| 潞西市| 南通市| 新源县| 巴林右旗| 曲阜市| 麻江县| 辉南县| 乐清市| 左权县|