首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >可选的param与QuerySpring-BootJPA1.5

可选的param与QuerySpring-BootJPA1.5
EN

Stack Overflow用户
提问于 2018-11-19 21:20:57
回答 1查看 274关注 0票数 0

我想用spring 1.5执行过滤器列表的查询,我有param必需的(用户名)和可选的param (电子邮件),我如何在查询中为param分配可选的?@ query (“从用户u选择u,其中包括:用户名和u.email=:email")公共页面getUsers(@Param(”用户名“)字符串用户名,@Param("email")字符串电子邮件);http://localhost:8080/users?username=&email=test:work精细http://localhost:8080/users?username=:Exception

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-19 22:55:12

使用JPA标准API如下:

首先,创建一个Specification对象:

代码语言:javascript
代码运行次数:0
运行
复制
private Specification<Item> createSpecification(ItemSearch itemSearch) {
    return (root, query, criteriaBuilder) -> criteriaBuilder.and(
            Stream.of(
                    itemSearch.getUsername() == null ? null : criteriaBuilder.like(root.get("username"), itemSearch.getUsername()),
                    itemSearch.getEmail() == null ? null : criteriaBuilder.equal(root.get("email"), itemSearch.getEmail())
            ).filter(Objects::nonNull).toArray(Predicate[]::new)
    );
}

JpaSpecificationExecutor扩展您的存储库

代码语言:javascript
代码运行次数:0
运行
复制
public interface ItemRepository extends CrudRepository<Item, Long>, JpaSpecificationExecutor<Item> {

}

使用规范选择所有项目:

代码语言:javascript
代码运行次数:0
运行
复制
List<Item> items = itemRepository.findAll(createSpecification(itemSearch))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53382803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档