[英]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.