Spring crud存储库按大小写不敏感的字符串排序

时间:2016-03-21 01:07:16

标签: spring postgresql spring-boot spring-data spring-data-jpa


crud存储库的界面是:

public interface BookRepository extends CrudRepository<BookEntity, String> {

    List<BookEntity> findByLibraryIdOrderByNumberAsc(long libraryId);
}

我想通过它们所在的库的id来获取书籍实体的列表,但也可以通过一个名为number的字段进行排序,这是一个字符串(因为它可能看起来像'ISBN-12356'),并按升序排序,但顺序也应不区分大小写。

我认为这可以使用

在SQL中完成
select * from Books where libraryId = ?  order by lower(number) ASC

在Spring Crud repsoitory中是否有任何与此类似的东西可以通过使用方法名称来实现,没有涉及本机SQL的特定定义?

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

我猜您需要创建JPQL查询:

public interface BookRepository extends CrudRepository<BookEntity, String> {

    @Query("select books from BookEntity books where libraryId = ?1  order by lower(number) ASC")
    List<BookEntity> findByLibraryIdOrderByNumberAsc(long libraryId);
}

答案 1 :(得分:1)

我找到的解决方案是使用以下内容:

 List<BookEntity> findByBookId(long libraryId, Sort sort);

然后,为了使用此方法,您可以使用如下所示的排序对象:

public static final Sort SORT_BY_NUMBER = new Sort(new Sort.Order(Sort.Direction.ASC, "number").ignoreCase());