Java findById()和find<;之间有什么区别;类名>;ById()?
在我的spring数据项目中,有一个实体如下所示: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
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);