在一个要求中,我需要通过id在列表中找到。以下是示例。
class Employee{
Long id;
Contractor contractor;
}
class Contractor {
Long id;
List<Address> addressList;
}
class Address {
Long id;
String line;
}
现在在EmployeeController.java类中,我需要找到员工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的属性地址!
谢谢!
答案 0 :(得分:2)
嗯,异常本身很清楚,它试图找到一个属性&#34;地址&#34; Employee
上的Contractor
不存在,因此您必须加入Address
和@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);
才能完成这项工作。但是,就我在reserved keywords列表中看到的情况而言,您无法通过方法命名来实现这一目标。
所以解决方案是编写自己的查询,例如:
{{1}}