2016-11-28 127 views
0

在存儲庫(注:SELECT_LIST只是from Organization org where in (...) and in (...)),IdentifiableWithName只是PersistablegetName()方法,使其成爲一個投影。我可以將@EntityGraph應用於@Query嗎?

@EntityGraph(Organization.NamedQuery.GRAPH_ID_NAME) 
@Query("select org " + SELECT_LIST + " order by org.name") 
List<IdentifiableWithName> findOrganizationsForSelectList(); 

在實體

@NamedEntityGraph(name = Organization.NamedQuery.GRAPH_ID_NAME, attributeNodes = { 
     @NamedAttributeNode(AbstractPersistedEntity.Index.ID ), 
     @NamedAttributeNode(Organization.Index.NAME) } 
) 

但是得到的查詢,似乎是爲實體默認,並沒有減少,只是名稱,ID字段。這甚至有可能嗎?如果是的話,我在做什麼錯了?如果Spring數據無法實現這一點,那麼JPA有可能(這意味着這是一個可行的功能請求)嗎?或者是否有任何其他方式可以對投影執行@Query,或者僅包含idname而不包含任何其他字段或連接的原始實體?

回答

0

我想你指的是投影在一般意義上,而不是春數據JPA的具體投影功能,它應該讓你做你需要什麼:

https://spring.io/blog/2016/05/03/what-s-new-in-spring-data-hopper#projections-on-repository-query-methods

封閉式的預測讓我們優化查詢執行,因爲只有 公開的屬性從數據存儲中查詢。

http://docs.spring.io/spring-data/jpa/docs/1.10.1.RELEASE/reference/html/#projections

public interface IdentifiableWithName{ 
    Long getId(); 
    String getName(); 
} 

interface SomeRepository extends CrudRepository<SomeClass, Long>{ 
    @Query("select org " + SELECT_LIST + " order by org.name") 
    List<IdentifiableWithName> findOrganizationsForSelectList(); 
} 
+0

沒有我的意思是投影在春季學期的數據,雖然在我們的...什麼是平臺2.0.x的......·高斯林,我認爲....是一個新功能?因爲我只是嘗試了IdentifiableWithName(這是一個接口,類似於你的接口,但通過繼承),它似乎工作,但它沒有縮小,它仍然基本上只是查詢實體類型的作用。 – xenoterracide

相關問題