我知道这个问题,但使用org.springframework.data:spring-data-jpa:1.7.0.RELEASE我仍然有同样的问题(Either use @Param on all parameters except Pageable and Sort typed once, or none at all!).我的班级是:
public interface BalanceHistoryRepository extends JpaRepository<BalanceHistory, Long> {
@Query("select bh from BalanceHistory bh where bh.account.id = :idAccount")
public BalanceHistory findCurrentBalanceByAccountNumber(PageRequest pageCriteira, @Param("idAccount") long idAccount);
}
Run Code Online (Sandbox Code Playgroud)
编辑
呼叫:
Pageable page = new PageRequest(0, 1, Sort.Direction.DESC, "date");
BalanceHistory bh = balanceHistoryRepository.findCurrentBalanceByAccountNumber(1,page);
Run Code Online (Sandbox Code Playgroud)
方法:
@Query("select bh from BalanceHistory bh where bh.account.id = :idAccount")
public BalanceHistory findCurrentBalanceByAccountNumber(@Param("idAccount") long idAccount, Pageable pageCriteira);
Run Code Online (Sandbox Code Playgroud) 我有一个以下的存储库:
public interface MilestoneRepository extends JpaRepository<Milestone,Date> {
@Query("select m from Milestone m where m.date <= :date order by m.date desc")
Page<Milestone> findLeftClosest(@Param("date") Date date, Pageable pageable);
}
Run Code Online (Sandbox Code Playgroud)
像上面定义的工作正常,但如果我切换参数顺序:
public interface MilestoneRepository extends JpaRepository<Milestone,Date> {
@Query("select m from Milestone m where m.date <= :date order by m.date desc")
Page<Milestone> findLeftClosest(Pageable pageable, @Param("date") Date date);
}
Run Code Online (Sandbox Code Playgroud)
我在上下文初始化时遇到以下异常(发布最有趣的底层原因):
Caused by: java.lang.IllegalArgumentException: Either use @Param on all parameters except Pageable and Sort typed once, or none at all!
at org.springframework.util.Assert.isTrue(Assert.java:65)
at org.springframework.data.repository.query.Parameters.assertEitherAllParamAnnotatedOrNone(Parameters.java:265)
at org.springframework.data.repository.query.Parameters.<init>(Parameters.java:85) …Run Code Online (Sandbox Code Playgroud)