Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Spring boot Spring数据JPA示例查询返回Null_Spring Boot_Jpa_Spring Data Jpa_Query By Example - Fatal编程技术网

Spring boot Spring数据JPA示例查询返回Null

Spring boot Spring数据JPA示例查询返回Null,spring-boot,jpa,spring-data-jpa,query-by-example,Spring Boot,Jpa,Spring Data Jpa,Query By Example,我已经查看了许多示例,并尝试了各种w/&w/o示例匹配器约束,但无论我做什么,我的示例查询都只返回null 我能够让CRUD存储库数据调用正常工作,没有任何问题,但是我将其扩展到了JPA存储库,并添加了QueryByExampleExecutor接口。findOne()似乎不起作用 使用SpringBoot2.2.6.RELEASE,SpringBootStarter数据jpa和MySQL5.7 使用示例查询时,是否需要完成整个对象以进行匹配?换句话说,所有的设定者都需要正确的信息吗?或者只是要

我已经查看了许多示例,并尝试了各种w/&w/o示例匹配器约束,但无论我做什么,我的示例查询都只返回null

我能够让CRUD存储库数据调用正常工作,没有任何问题,但是我将其扩展到了JPA存储库,并添加了QueryByExampleExecutor接口。findOne()似乎不起作用

使用SpringBoot2.2.6.RELEASE,SpringBootStarter数据jpa和MySQL5.7

使用示例查询时,是否需要完成整个对象以进行匹配?换句话说,所有的设定者都需要正确的信息吗?或者只是要匹配的对象数据项

是的,数据库只包含一个我试图匹配的正确字符串

客户

@实体
@表(name=“客户”)
公共类客户{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“id”)
私人长id;
@列(名称=“社会保障号”)
私有字符串socialSecurityNumber;
//还包括其他数据字段
}
CustomerRepository

import org.springframework.data.jpa.repository.JpaRepository;
公共接口CustomerRepository扩展了JpaRepository{
}
QueryByExampleExecutor

import java.util.Optional;
导入org.springframework.data.domain.Example;
导入org.springframework.data.domain.Page;
导入org.springframework.data.domain.Pageable;
导入org.springframework.data.domain.Sort;
公共接口QueryByExampleExecutor{
可选findOne(示例);
Iterable findAll(示例);
Iterable findAll(示例,排序);
pagefindall(例如,Pageable Pageable);
长计数(示例);
存在布尔值(示例);
}
客户服务

公共接口CustomerService{
公共客户findBySSN(字符串ssn);
}
CustomerServiceImpl

@服务
公共类CustomerServiceImpl实现CustomerService{
私人客户存储客户存储;
@自动连线
公共CustomerServiceImpl(CustomerRepository客户存储库){
customerRepository=客户存储库;
}
@凌驾
公共客户findBySSN(字符串ssn){
//创建一个新对象,用作查询的基础
客户=新客户();
//设置查询的参数
customer.setSocialSecurityNumber(ssn);
//创建一个示例查询
示例customerExample=Example.of(客户);
可选结果=customerRepository.findOne(customerExample);
如果(result.isPresent()){
返回result.get();
}否则{
//没有找到客户
抛出新的ObjectNotFoundException(“客户”,“社会保险号(“+ssn+”)未找到…”);
}
}
}
调用方法

@Autowired
私人客户服务;
Customer ssnccustomer=customerService.findBySSN(“123456789”);
如果(ssnCustomer==null){
System.out.println(“未找到的SSN为空”);
}否则{
System.out.println(“找到的SSN”+ssnCustomer.getId());
}

我错过了什么?提前感谢。

将id类型从long更改为long。long自动将值设置为0,并使其成为查询的一部分

私人长id


相应地更改getter和Setter

将id类型从long更改为long。long自动将值设置为0,并使其成为查询的一部分

私人长id


相应地更改getter和Setter

我看不到customerRepository在您的服务类中已初始化。您还可以详细说明如何检查空值。如果返回对象,则您将获得详细信息或代码,并抛出异常。我已编辑服务实现以显示存储库初始化。对不起,我以前忘了。数据调用完成后,我的内部异常处理程序显示===2020-06-03 21:16:20 WARN o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver.logException(199)-已解析[com…….exception.ObjectNotFoundException:未找到客户-社会保险号码(123456789)…]===我还将一些AOP用于日志记录目的,在本测试中,我将其关闭。使用AOP==c.z.z.AOP..AroundServicesDevice(195)-CustomerServiceImpl.findBySSN(..)时出现异常:找不到客户-SSN(123456789)。。c、 z.z.aop…后向警告(172)-后向警告运行()。。c、 z.z.aop…logMethodSignatureAndArguments(240)-调用的方法:CustomerServiceImpl.findBySSN(..),方法签名:Customer…service.CustomerServiceImpl.findBySSN(字符串)c.z.aop…logMethodSignatureAndArguments(248)-在下面的建议(177)之后,参数是:123456789 c.z.aop-引发异常:找不到客户-社会保险号码(123456789)。1)在实体类中将id从long更改为long。2) 要从存储库读取数据,请通过传递ssn字符串调用findOneBySocialSecurityNumber。您不需要创建对象来获取记录。@AlokSingh谢谢,我以前只创建了存储库调用并使其工作。但是想尝试/使用我也找到的示例查询方法。关键是按照您的建议将我的所有原语更改为包装类。我没有看到customerRepository在您的服务类中初始化。您还可以详细说明如何检查空值。如果返回对象,则您将获得详细信息或代码,并抛出异常。我已编辑服务实现以显示存储库初始化。对不起,我以前忘了。数据调用完成后,我的内部异常处理程序显示===2020-06-03 21:16:20 WARN o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver.logException(199)-R