我的JavaSpringJPA查询没有返回等价的MySQL查询返回的内容
我正在使用JavaSpring作为我正在开发的web服务。有人问我上班有困难 在MySQL Workbench中,此查询工作正常:我的JavaSpringJPA查询没有返回等价的MySQL查询返回的内容,java,spring,jpa,Java,Spring,Jpa,我正在使用JavaSpring作为我正在开发的web服务。有人问我上班有困难 在MySQL Workbench中,此查询工作正常: SELECT * from Employees e WHERE e.personnel_type like 'Full Time' AND e.branch like '%%' AND e.office like '%%' 请注意,分支机构和办公室是空的,没有提供 如果我在MySQL中运行此查询,我会得到所有“全职”员工,而不管是分支机构还是办公室 但是,在我的J
SELECT * from Employees e
WHERE e.personnel_type like 'Full Time'
AND e.branch like '%%'
AND e.office like '%%'
请注意,分支机构
和办公室
是空的,没有提供
如果我在MySQL中运行此查询,我会得到所有“全职”员工,而不管是分支机构
还是办公室
但是,在我的JPA查询中:
@Repository
public interface EmployeeRepository extends CrudRepository<Employee, Long> {
@Query("
FROM Employees e
WHERE e.personnelType like :personnelType
AND e.branch like %:branch%
AND e.officelike %:office%
");
List<Object[]> employeeSearch(
@Param("personnelType") String personnelType,
@Param("branch") String branch,
@Param("office") String office
);
@存储库
公共接口EmployeeRepository扩展了Crudepository{
@查询(”
来自雇员
其中e.personnelType类似于:personnelType
和e.branch like%:branch%
和e.officelike%:office%
");
列出员工搜索(
@参数(“personnelType”)字符串personnelType,
@参数(“分支”)字符串分支,
@参数(“办公室”)字符串办公室
);
如果我不提供分支机构
或办公室
,我什么也得不到;就像通配符%%
不起作用一样
但是,如果我提供了分支机构
和办公室
,我会得到我应该得到的记录
我做错了什么?如果执行以下操作,也可以传递null,它将正常工作
FROM Employees e
WHERE e.personnelType like :personnelType
AND (:branch is null OR e.branch like %:branch%)
AND (:office is null OR e.officelike %:office%)
首先将您的MySQL查询更改/优化为 从e中选择* 其中e.人员类型=‘全职’ 它将返回与您编写的结果相同的结果
- 如果不使用任何通配符,为什么要像使用通配符一样使用
- 为什么要像“%”一样使用,,如果您不在该列上使用这样的条件,它将“默认”获取所有条件,因为您没有对它们指定任何限制
**注:**我还猜测,您的持久性构建得不好,因为对象[]类型为员工实体。我建议您重新考虑这一点。当您说“不提供”时,分支机构和办公室null或空的值是什么?我猜测您的查询是这样的“e.branch类似于%null%”你是100%正确。我只是仔细检查了我的代码,我发送了一个
null
,而不是一个空字符串
。谢谢!