Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有查询Spring Boot jpa 1.5的可选参数_Java_Hibernate_Spring Boot_Jpa - Fatal编程技术网

Java 带有查询Spring Boot jpa 1.5的可选参数

Java 带有查询Spring Boot jpa 1.5的可选参数,java,hibernate,spring-boot,jpa,Java,Hibernate,Spring Boot,Jpa,我想用spring boot 1.5执行过滤器列表查询,我有必需的参数(用户名)和可选的参数(电子邮件),如何在查询中为参数分配可选的? @查询(“从用户u中选择u,其中u.username如:username和u.email=:email”) 公共页面getUsers(@Param(“用户名”)字符串username,@Param(“电子邮件”)字符串email); :干得好 :Exception使用JPA标准API,如下所示: 首先,创建一个规范对象: private Specificati

我想用spring boot 1.5执行过滤器列表查询,我有必需的参数(用户名)和可选的参数(电子邮件),如何在查询中为参数分配可选的? @查询(“从用户u中选择u,其中u.username如:username和u.email=:email”) 公共页面getUsers(@Param(“用户名”)字符串username,@Param(“电子邮件”)字符串email); :干得好
:Exception

使用JPA标准API,如下所示:

首先,创建一个
规范
对象:

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)
    );
}
使用规范选择所有项目:

List<Item> items = itemRepository.findAll(createSpecification(itemSearch))
List items=itemRepository.findAll(createSpecification(itemSearch))

创建两个方法,并根据电子邮件的状态调用其中一个或另一个方法。我确实有许多用于筛选的参数,但对于这个问题,我只需要两个参数,如何使用必需和可选参数执行查询?使用JPA criteria API动态创建查询,或QueryDSL。
List<Item> items = itemRepository.findAll(createSpecification(itemSearch))