久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

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

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

瀏覽:147日期:2023-12-19 13:38:49

問題描述

有如下段代碼 其中person是jpa的entity對(duì)象,personResult是自定義對(duì)象

@Query(select new com.xx.yy.PersonResult(p.id,p.name,p.age) from Person p) List<PersonResult> findPersonResult();

這樣執(zhí)行是可以的,但是如果我其中的personResult對(duì)象中的id是叫personId,上面的代碼該如何改?

我用過

@Query(select new com.xx.yy.PersonResult(p.id as personId,p.name,p.age) from Person p) List<PersonResult> findPersonResult();

會(huì)報(bào)錯(cuò),是不是jpql new對(duì)象的時(shí)候不支持別名嗎?

問題解答

回答1:

你的代碼

@Query(select new com.xx.yy.PersonResult(p.id as personId,p.name,p.age) from Person p) List<PersonResult> findPersonResult();

你把a(bǔ)s去掉就可以了,jpa是不支持這種語法的。

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

看下我代碼,這樣會(huì)直觀一點(diǎn)

@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;}

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 黄石市| 墨竹工卡县| 仙游县| 鹤庆县| 宜兴市| 板桥市| 穆棱市| 广平县| 含山县| 临邑县| 古田县| 天全县| 新营市| 仁寿县| 富源县| 开远市| 霍林郭勒市| 英超| 雷波县| 特克斯县| 社会| 蓬安县| 南康市| 庄浪县| 长沙市| 铜山县| 公安县| 海南省| 遵化市| 曲阜市| 临夏市| 收藏| 汉川市| 镇康县| 绥宁县| 张掖市| 鲜城| 大悟县| 海宁市| 元谋县| 桐城市|