2017-06-09 35 views
0

在互聯網上,我發現Spring可以做分頁以及從數據庫中檢索數據列表。因此,我創建了測試類如下:Spring Pageable並不適用於訂購

@Test 
public void testPageable() { 
     int pageSize = 5; 
     Sort sort = new Sort(Direction.DESC, "someColumnA"); 
     Pageable pageable = new PageRequest(0, pageSize, sort); 
     List<SomeObject> listOFSomeObject = getDao().getListData("paramOne", pageable); 
} 

當我分析清單我從來沒有someColumnA的排序在DESC時尚,雖然我回來只有5條記錄這是正確的。

有人可以讓我知道我可能會做錯什麼嗎?就像一個參考,我使用Hibernate進行數據庫訪問和Spring命名查詢。

編輯: 代碼getListData() - >

public interface SomeRepository 
       extends JpaRepository<EntityMappedViaHibernate, String> { 

    List<Object[]> getListData(@Param(value = PARAM_ONE) final String paramOne, Pageable pageable); 
} 

我Hibernate的實體如下:

@NamedQueries(value = { 
@NamedQuery(name = "SomeRepository.getListData", query = "select id, someColumnA from EntityMappedViaHibernate where id = :paramOne") 
}) 
@Entity 
@Table(name = "entity_mapped_via_hibernate") 
public class EntityMappedViaHibernate implements Serializable { 
    // Code Omitted on purpose 
} 
+0

你可以添加'getListData'的代碼嗎? –

+0

@Darshan,添加了所需的代碼。請看看 – Raj

+0

不確定它是否正確,但方法需要返回'。你可以嘗試改變它嗎? –

回答

0

因此,那些你們誰是掙扎和我一樣,要解決這個問題您需要在存儲庫中查詢。在我的情況下,它必須在SomeRepository中。因此,在回購的代碼執行以下操作:

public interface SomeRepository 
      extends JpaRepository<EntityMappedViaHibernate, String> { 

@Query("select id, someColumnA from EntityMappedViaHibernate where id = :paramOne") 
List<Object[]> getListData(@Param(value = PARAM_ONE) final String paramOne, Pageable pageable); 
} 

無需有EntityMappedViaHibernate內NamedQuery。而已!!

希望有人找到答案,不要像我那樣掙扎。