2015-12-22 79 views
0

我想在一個倉庫界面做這樣的事情(在Spring數據JPA):我可以限制JPQL的結果只返回一個結果嗎?

interface myRepository extends JpaRepository<A, Long> { 
    @Query("select a from A a where a.x = :x") 
    A findFirstBySomeCondition(int x); 
} 

但我只需要第一個結果。 (編輯:實際查詢條件非常複雜,所以我寧願使用@Query而不是findFirst或findTop ...)

我不想使用標準api,因爲它是冗長的。

我不想使用本機查詢,因爲我將不得不手動組合查詢字符串。

因此,考慮到上面的限制條件,是否還有解決方案?

謝謝!

+0

你檢查我的答案? – ozgur

+0

'findFirst' [作品](http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.limit-query-result)。如果你的需求和你發佈的一樣簡單,'findFirstByX(int x)'不需要'@ Query'註解。檢查我鏈接到的Spring Data JPA文檔。 – manish

+0

這是一個非常簡單的例子,所以我想用'@ Query'而不是'findFirst'。 – xing

回答

3

查詢方法的結果可以通過關鍵字first或top限制,這些關鍵字可以互換使用。一個可選的數值可以被附加到top/first以指定要返回的最大結果大小。

interface myRepository extends JpaRepository<A, Long> { 
    @Query("select a from A a where a.x = :x") 
    Page<A> findFirstBySomeCondition(@Param("x") int x,Pageable pageable); 
} 

Impletation類:

Page<A> results = repository.findFirstBySomeCondition(x,new PageRequest(0, 1)); 
A object = results.getContent.get(0);