如何在Spring Data中使用OrderBy和findAll
我正在使用spring数据,我的dao看起来像
public interface StudentDAO extends JpaRepository<StudentEntity, Integer> { public findAllOrderByIdAsc(); // I want to use some thing like this }
在上面的代码中,注释行显示了我的意图。 可以弹簧数据提供内置的function,使用这种方法来find所有的logging顺序由一些列与ASC / DESC?
谢谢 :)
我对派对有点晚了,但是因为接受的答案使用了Sort来实现你想要的,所以我决定把这个发布给任何可能寻找这个问题的答案的人。
public interface StudentDAO extends JpaRepository<StudentEntity, Integer> { public List<StudentEntity> findAllByOrderByIdAsc(); }
上面的代码应该工作。 我正在使用类似的东西:
public List<Pilot> findTop10ByOrderByLevelDesc();
它返回最高级别的10行。
重要提示:
由于我已经被告知很容易错过这个答案的关键点,这里有一点澄清:
findAll By OrderByIdAsc();
这个小小的'通过'是所有的魔法。
AFAIK,我不认为这是可能的直接方法命名查询。 但是,您可以使用内置的sorting机制,使用Sort
类。 存储库有一个findAll(Sort)
方法,您可以将Sort
一个实例传递给。 例如:
import org.springframework.data.domain.Sort; @Repository public class StudentServiceImpl implements StudentService { @Autowired private StudentDAO studentDao; @Override public List<Student> findAll() { return studentDao.findAll(sortByIdAsc()); } private Sort sortByIdAsc() { return new Sort(Sort.Direction.ASC, "id"); } }
请看这里: https : //docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods
在“表2.3。方法名称中支持的关键字”
我认为它正是你所需要的和你所说的相同的查询应该工作…