Java findById()和find<;之间有什么区别;类名>;ById()?

Java findById()和find<;之间有什么区别;类名>;ById()?,java,spring-boot,spring-data-jpa,spring-repositories,Java,Spring Boot,Spring Data Jpa,Spring Repositories,在我的spring数据项目中,有一个实体如下所示: public class Employee { @Id @GeneratedValue(strategy= GenerationType.IDENTITY) @Column(name="id") private Integer id; @Column(name="category") private Category category; @Ma

在我的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);
可选findEmployeeById(整数id);
vs

可选findById(整数id);

我通过我身边的autocomplete(IntelliJ)意外地“发现”了这一点。

不同之处在于,
findEmployeeById()
按字段搜索名为
的员工,
findById
按字段搜索注释为
@Id
忽略实体Id字段的名称


在您的情况下,就像许多其他人一样,
@Id
字段恰好被命名为
Id
,因此结果是相同的。

不同的是,当
findeEmployeeById()
按字段命名的员工时,正如它所说的那样,
Id
findById
按字段搜索注释为
@Id
忽略实体Id字段的名称

在你的例子中,就像其他许多例子一样,
@Id
字段恰好被命名为
Id
,因此结果是相同的。

Aha!这是有道理的——这就是为什么它们看起来功能相同。啊哈!这是有道理的——这就是为什么它们看起来功能相同。
Optional<Employee> findById (Integer id);