findById() 和<classname>find ById() 有什么区别?



在我的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,因此结果是相同的。

最新更新