2010-05-15 50 views
2
選擇性獲取從某一個表中的項目

環境:JPA 1,休眠3.3.x如何通過JPA

我有一個JPA實體類(用戶),我該如何選擇地獲取成員變量說(名字,姓氏)而不是使用JPA api獲取所有用戶屬性。

回答

2

如果您查詢更多列,您將獲得一個對象結果,您必須將其轉換爲對象數組才能檢索值。更好的是創造一種可以直接存儲結果的ViewObject類:

select new full.package.name.UserView(u.firstName, u.LastName) from User u 

其中用戶視圖的樣子:

class UserView { 
    String firstName, String lastName; 
    // getters, setters/constuctor 
} 
+0

來說會有很大的問題,這種看法似乎使查詢接口更容易理解。 – Sam 2010-05-17 07:57:19

5

你的意思是這樣的(在這種情況下,您的查詢的結果將是一個Object[]):

SELECT u.firstName, u.lastName FROM User u 

或者,你可以在SELECT子句中使用構造函數表達式

SELECT NEW com.acme.example.UserDetails(u.firstName, u.lastName) FROM User u 

NEW中使用的類不一定是一個實體,它只需要提供一個合適的構造函數。

+0

感謝,認爲似乎使查詢界面要比以前的建議更容易理解它可以讓你將輸出解析爲一個[Object []],這對於維護 – Sam 2010-05-17 07:58:03