用于查找方法的 JPA CrudRepository
JPA CrudRepository for findIn method
在一项要求中,我需要按 ID 在列表中查找。下面是示例。
class Employee{
Long id;
Contractor contractor;
}
class Contractor {
Long id;
List<Address> addressList;
}
class Address {
Long id;
String line;
}
现在EmployeeController.javaclass我需要通过员工ID和地址ID来查找。
我有如下的 CrudRepository。
interface EmployeeRepository extends CrudRepository<Employee, Long> {
Employee findOne(Long id);
// I want one method here that can find by employee id and address id.
Employee findByIdAndAddress();
}
当我尝试运行 spring 应用程序时,出现以下异常。
PropertyReferenceException: 否 属性 找到类型为 Employee 的地址!
谢谢!
嗯,异常本身很清楚,它试图在 Employee
上找到一个 属性 "address",它不存在,所以你必须加入 Contractor
和 Address
来完成这项工作。但是,据我在 reserved keywords 的列表中看到的,你不能用方法命名来做到这一点。
所以解决方案是编写自己的查询,例如:
@Query("SELECT e FROM Employee e JOIN e.contractorList c JOIN c.addressList a " +
"WHERE e.id = :id AND a.id = :addressId")
Employee findByIdAndAddress(@Param("id") Long id, @Param("addressId") Long addressId);
在一项要求中,我需要按 ID 在列表中查找。下面是示例。
class Employee{
Long id;
Contractor contractor;
}
class Contractor {
Long id;
List<Address> addressList;
}
class Address {
Long id;
String line;
}
现在EmployeeController.javaclass我需要通过员工ID和地址ID来查找。
我有如下的 CrudRepository。
interface EmployeeRepository extends CrudRepository<Employee, Long> {
Employee findOne(Long id);
// I want one method here that can find by employee id and address id.
Employee findByIdAndAddress();
}
当我尝试运行 spring 应用程序时,出现以下异常。
PropertyReferenceException: 否 属性 找到类型为 Employee 的地址!
谢谢!
嗯,异常本身很清楚,它试图在 Employee
上找到一个 属性 "address",它不存在,所以你必须加入 Contractor
和 Address
来完成这项工作。但是,据我在 reserved keywords 的列表中看到的,你不能用方法命名来做到这一点。
所以解决方案是编写自己的查询,例如:
@Query("SELECT e FROM Employee e JOIN e.contractorList c JOIN c.addressList a " +
"WHERE e.id = :id AND a.id = :addressId")
Employee findByIdAndAddress(@Param("id") Long id, @Param("addressId") Long addressId);