2013-03-08 34 views
1

我有一個有很多屬性的模型。對於列表,我只想獲得這些屬性中的幾個,因爲它們中的大多數僅顯示在詳細視圖中。如果在Spring JPA中未提取所有屬性,自定義查詢是否可以返回模型?

所以我做了這個查詢我的倉庫:

JpaRepository< Customer, Long > 

@Query("SELECT id, name FROM Customer") 
public List<Customer> findAllSummary(); 

它的工作原理 - 的確是一個ID和姓名被返回,而不是作爲一個Customer對象。這將成爲一個問題,當我將數據返回到JSON的客戶:有沒有屬性名,只是每一行的值,而在默認查詢返回同樣的名稱,例如:

"id": 1 
"name": "John" 
// rest of the properties 

有一種使自定義查詢返回模型對象的方法,即使某些屬性爲空?或者是更好的一些其他技術?

回答

3

您可以創建一個DTO必需的字段和合適的構造函數,並使用構造函數的語法從查詢返回它:

@Query("SELECT new CustomerSummary(id, name) FROM Customer") 
public List<CustomerSummary> findAllSummary(); 
+0

好吧,但我想我需要另一個倉庫呢?因爲客戶存儲庫是爲Customer對象輸入的? – wannabeartist 2013-03-08 09:53:38

+0

我做了另一個存儲庫,但我仍然得到錯誤:java.lang.IllegalArgumentException:不是託管類型。 (在啓動時崩潰)即使我添加CustomerSummary的完整軟件包名稱,該名稱與Customer相同。 CustomerSummary是否需要特殊註釋? – wannabeartist 2013-03-08 11:05:30

+2

不,您不需要另一個存儲庫或特殊註釋。只需將其添加到您現有的存儲庫。是的,你需要完整的包名稱。 – axtavt 2013-03-08 11:17:28

相關問題