1. 程式人生 > >jpa+mysql:查詢出的記錄居然都是同一個entity

jpa+mysql:查詢出的記錄居然都是同一個entity

在jpa的函式中,我用createNativeQuery執行了一個查詢語句,這個查詢語句用到了union,並且用到了left join,查詢出結果後,卻發現記錄數目正確,但每條記錄居然資料完全一樣,進行跟蹤,對其執行的查詢語句放mysql中進行查詢,結果正確,各條記錄是各條記錄,但是jpa對映到entity後,就變成數目相同的同一條記錄了。

後來才發現,因為用union,用left join,在select的欄位列表中,id指向的是一個完全相同的值,也就是查詢出來的記錄雖然各不相同,但其id結果值卻是相同的!!

所以,jpa對映entity時,是根據id來居分不同實體的,id相同,則認為是同一條記錄,會重複記錄,而不會分別記錄其它欄位不同的值。