在 Spring Boot 3中,我创建了一个自定义存储库
@Repository
public class BookRepositoryCustomImpl implements BookRepositoryCustom {
}
public interface BookRepositoryCustom {
List<Book> searchBook(SearchBook searchBook);
}
@Repository
@Transactional(readOnly = true)
public interface BookRepository extends JpaRepository<Book, Long> {
}
我在searchBook方法中搜索使用规范
用spring 2.x编辑是可能的
@Repository
public class AirportRepositoryImpl extends SimpleJpaRepository<Airport, Integer>
implements AirportRepositoryCustom {
@Autowired
public AirportRepositoryImpl(EntityManager em) {
super(Airport.class, em);
}
@Override
public Page<Airport> advancedSearch(AirportSearch search, Pageable page) {
Specification<Airport> specification = (Root<Airport> root, CriteriaQuery<?> cq,
CriteriaBuilder cb) -> {
Predicate p = cb.conjunction();
...
return p;
};
return this.findAll(specification, page);
}
}
1条答案
按热度按时间hc8w905p1#
您不能在自定义方法实现中使用
JpaSpecificationExecutor
。但是Specification
只能从Root
、CriteriaQuery
和CriteriaBuilder
创建Predicate
。您可以将EntityManager
注入BookRepositoryCustomImpl
,并使用Criteria API创建查询,包括使用Specification
中的Predicate
。