Spring Pageable不适用于订购

时间:2017-06-09 22:49:14

标签: java spring hibernate

在互联网上,我发现Spring可以进行分页,也可以订购从数据库中检索的数据列表。因此,我创建了我的测试类如下:

 @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 );
 }

当我分析列表时,我从未以DESC方式订购someColumnA,尽管我只收回了5条正确的记录。

有人可以让我知道我可能做错了什么吗?就像一个FYI,我使用Hibernate进行数据库访问和Spring命名查询。

编辑: getListData()的代码 - &gt;

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
}

1 个答案:

答案 0 :(得分:0)

所以那些像我一样努力解决这个问题的人是你需要在Repository中进行查询。在我的情况下,它必须在SomeRepository内。因此,在repo的代码中执行以下操作:

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。那就是!!

希望有人找到答案,不要像我一样挣扎。