java - JPA 中自定義對象和原生對象屬性名不一致怎么解決?
問題描述
有如下段代碼 其中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;}
相關文章:
1. 請教一個python字符串處理的問題?2. HTML5禁止img預覽該怎么解決?3. javascript - 手機點擊input時,button會被頂上去?求解決!!!4. 網頁爬蟲 - python爬蟲用BeautifulSoup爬取<s>元素并寫入字典,但某些div下沒有這一元素,導致自動寫入下一條,如何解決?5. html - 請教一個前端css問題。6. 百度地圖api - Android 百度地圖 集成了定位,導航 相互的jar包有沖突?7. javascript - vscode alt+shift+f 格式化js代碼,通不過eslint的代碼風格檢查怎么辦。。。8. javascript - vue-mint UI - icon在哪里有文檔?9. html5 - 表單無法屏蔽自動填充 autocomplete=off10. python - django 按日歸檔統計訂單求解
