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的特定定义?
感谢您的帮助。
答案 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());