繁体   English   中英

Spring Pageable不适用于订购

[英]Spring Pageable doesn't work for ordering

在互联网上,我发现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 );
 }

当我分析列表时,尽管我只得到5条正确的记录,但我从未以DESC方式获得someColumnA的顺序。

有人可以让我知道我可能做错了吗? 就像FYI一样,我正在使用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
}

因此,像我一样在奋斗中的人们,这个问题的解决方案是,您需要在存储库中添加查询。 就我而言,它必须位于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。 而已!!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM