Pageable и @Param в spring проблеме JpaRepository [2]
Я знаю этот вопрос, но используя 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);
}
Edit
Вызов:
Pageable page = new PageRequest(0, 1, Sort.Direction.DESC, "date");
BalanceHistory bh = balanceHistoryRepository.findCurrentBalanceByAccountNumber(1,page);
Метод:
@Query("select bh from BalanceHistory bh where bh.account.id = :idAccount")
public BalanceHistory findCurrentBalanceByAccountNumber(@Param("idAccount") long idAccount, Pageable pageCriteira);
Ответы
Ответ 1
Убедитесь, что вы используете Pageable
вместо PageRequest
, чтобы первый признак был признан не связанным с фактическим запросом. Кроме того, вам нужно изменить тип возвращаемого значения на Page
или List
, поскольку вы в большинстве случаев возвращаете несколько результатов.
public interface BalanceHistoryRepository extends CrudRepository<BalanceHistory, Long> {
@Query("select bh from BalanceHistory bh where bh.account.id = :idAccount")
Page<BalanceHistory> findCurrentBalanceByAccountNumber(@Param("idAccount") long idAccount, Pageable pageable);
}
Это должно сделать трюк. Обратите внимание, что мы обычно рекомендуем не расширять специализированные интерфейсы магазина, поскольку они раскрывают API-интерфейс, специфичный для магазина, который должен быть открыт только в случае необходимости.
Ответ 2
Я столкнулся с тем же исключением, когда случайно импортировал неправильный класс Pageable
.
Это также может произойти, если вы используете PageRequest
в хранилище.
должно быть,
import org.springframework.data.domain.Pageable;