【发布时间】:2020-01-08 07:07:00
【问题描述】:
我正在使用 Spring Data JPA 和下面的原生查询
public interface ItemRepository extends JpaRepository<ItemEntity, Long> {
@Query(value = "select * from items i where i.category = :itemCategory and i.item_code = :itemCode", nativeQuery = true)
Page<ItemEntity> search(@Param("itemCategory") String itemCategory, @Param("itemCode") String itemCode, Pageable pageable);
}
现在,我的用例是
-
itemCode可用,只应返回该类别中带有该代码的项目。 - 但如果
itemCode不可用,则应退回该类别中的所有项目。
所以上述类别的问题是当itemCode 以NULL 传递时,没有返回任何数据,因为它不匹配任何内容。而要求是它应该被忽略。
那么有没有一种方法可以选择向 Spring Data JPA 本机查询添加子句。我知道CriteriaQuery 是可能的,但我们可以为原生查询做类似的事情吗?
谢谢
【问题讨论】:
-
看看使用 querydsl 扩展。这将允许您按类别、代码或类别和代码调用,而无需编写任何查询实现。
标签: spring spring-boot spring-data-jpa nativequery