在我的spring数据项目中,有一个实体看起来像:
public class Employee {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name="id")
private Integer id;
@Column(name="category")
private Category category;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="element_id")
private Department department;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="agency_id")
private Agency agency;
public Employee() {}
// routine getters and setters
}
在我的EmployeeRepository中,我发现我可以派生一个方法findEmployeeById((,它的工作方式似乎与通常的findById((完全相同(但我不确定(。有人能解释一下这两种方法之间的区别吗?
Optional<Employee> findEmployeeById (Integer id);
与
Optional<Employee> findById (Integer id);
我"发现的";这是通过我这边的自动完成(IntelliJ(意外完成的。
不同之处在于,当findEmployeeById()
按其名为id
的字段搜索员工时,findById
按注释为的字段搜索为@Id
,而不考虑实体id字段的名称。
在您的情况下,与其他许多情况一样,问题是@Id
字段恰好命名为id
,因此结果是相同的。