使用本机查询的JPA查询返回null而不是实体列表

时间:2019-02-19 17:17:52

标签: java sql hibernate spring-boot spring-data-jpa

使用spring-data-jpa

@Entity
@Table(name="employees")
Class Employee{
.
.
.
.

}

public interface EmployeeRepository extends CrudRepository<Employee,Long> {
  @Query(value = "SELECT * from employees where org_id=:orgId ",nativeQuery = true)
    public List<Employee> findByOrgId(@Param("orgId") String orgId);
}

在调用存储库函数时,它的行为很奇怪。

在“雇员”表中,有两个org_id = 18的记录。

方案1: 将18传递给此函数时,可以得到List类型的结果。反复进行可以获得预期的结果

方案2 传递数据库中不存在的组织ID时,它将返回null。

Am通过检查null来处理它。

检查null是否正确? 结果应该返回一个空列表而不是null吗?

1 个答案:

答案 0 :(得分:1)

  1. 如果未找到结果,则正常行为的确会返回一个空列表。如果List<Object>是已定义接口中方法的返回值,则该方法永远不应返回null
  2. 问题是参数被赋予了方法,而在 Query 中的任何地方都没有使用。由于某种原因,在这种情况下, Spring 决定返回 Null 。解决方案:删除未使用的参数或在 Query 中使用该参数。