如何将搜索规范应用于存储库方法?
这是我的代码
@Repository
public interface JourneyRepository extends JpaRepository<Journey, Long>, JpaSpecificationExecutor<Journey> {
Page<Journey> findAllByDriverId(Long id, Pageable pageable);
}
我想在findAllByDriverId上应用搜索条件规范
答案 0 :(得分:0)
findByType模式由spring data jpa提供。 JpaSpecificationExecutor仅支持以下接口。如果要findAllByDriverId,只需使用spring data jpa。
public interface JpaSpecificationExecutor<T> {
T findOne(Specification<T> spec);
List<T> findAll(Specification<T> spec);
Page<T> findAll(Specification<T> spec, Pageable pageable);
List<T> findAll(Specification<T> spec, Sort sort);
long count(Specification<T> spec);
}
我认为您不需要JpaSpecificationExecutor,并且我猜DriverId在旅程中?然后加入spring-boot-starter-data-jpa
public interface JourneyRepository extends JpaRepository<Journey, Long> {
Page<Journey> findAllByDriverId(Long id, Pageable pageable);
}
答案 1 :(得分:0)
是的,您可以使用存储库中方法上方的@Query注释,例如:
@Query(value="select * from Journey where [name of the field] = ?1",
countQuery = "SELECT count(*) FROM Journey WHERE [name of the field] = ?1",
nativeQuery = true)
Page<Journey> findAllByDriverId(Long id, Pageable pageable);
答案 2 :(得分:0)
您可以将JPA Criteria用于弹簧数据JPA,请查看下面的链接,该链接将为您提供所需的内容: