springboot中基于实体camelcase变量nam的java命名存储库方法
我知道在spring boot中,在存储库中创建find方法将基于实体的变量名。如果实体中的变量是驼峰大小写,如何在存储库中创建find方法。这就是我创造的,对吗
class Person {
private int id;
private Teacher teacher; //other variable...getters and setters }
private BranchManager branchManager; //other variable...getters and setters }
class Teacher {
private String firstName ;
private String lastName; //getters and setters }
class BranchManager {
private String firstName ;
private String lastName; //getters and setters }
在我的存储库中
@Repository
public interface PersonRepository extends CrudRepository<Person, Long>{
public Person findPersonByTeacherFirstName(String firstName);
//how to find Person by BranchManager firstName and lastName
}
# 1 楼答案
首先,您没有在
Person
中声明Teacher
对象。假设您将声明如下:试试看
注意,它返回一个列表
如果只想返回第一条记录。您可以使用以下命令
而且,我个人更喜欢
因为这将返回可选。空()以防找不到记录。此外,它还将迫使您检查它的存在,从而避免NullPointerException
更新1
根据评论中的要求,
如果你想通过firstName和lastName查找,你可以使用以下方法
你可以参考这个link来了解这些约定
更新2
按branchManager的名字和姓氏搜索
更新3
正如Aluan Haddad在评论中提到的,这种做法是不可扩展的
作为一种选择,我提供了另一种方法来点击数据库的查询
您可以创建一个示例对象,并将其传递给
findAll(Example e)
的JpaRepository
实现现在使用
这将返回所有教师名为
Teacher Name
的人作为C#EntityFramework的替代方案,您可以在Java中使用QueryDSL