首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于实体camelcase变量nam的Naming库命名方法

基于实体camelcase变量nam的Naming库命名方法
EN

Stack Overflow用户
提问于 2017-05-14 05:26:50
回答 1查看 987关注 0票数 0

我知道在spring引导中,在存储库中创建一个find方法将基于该实体的变量名。如果我的实体中的变量在camel中,我如何在存储库中创建一个find方法。这就是我创造的,对吗?

代码语言:javascript
复制
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 }

在我的仓库里

代码语言:javascript
复制
@Repository
public interface PersonRepository extends CrudRepository<Person, Long>{


      public Person findPersonByTeacherFirstName(String firstName);

      //how to find Person by BranchManager firstName and lastName

}
EN

回答 1

Stack Overflow用户

发布于 2017-05-14 06:20:37

首先,您还没有在Teacher中声明Person对象。假设您将按以下方式声明

代码语言:javascript
复制
private Teacher teacher; // name of this object is important to create the repository methods

试一试

代码语言:javascript
复制
List<Person> findByTeacher_FirstName(String name);

注意,它findBy返回一个列表。

如果您只想返回第一条记录。您可以使用以下方法

代码语言:javascript
复制
Person findFirstByTeacher_FirstName(String name);

另外,我个人更喜欢

代码语言:javascript
复制
Optional<Person> findFirstByTeacher_FirstName(String name);

因为这将返回Optional.empty(),以防它找不到记录。此外,它将迫使您检查它的存在,从而避免NullPointerException。

更新1

如评论中所要求的,

如果您想通过firstName和lastName查找,可以使用以下方法

代码语言:javascript
复制
Person findFirstByTeacher_FirstNameAndTeacher_LastName(String firstName, String lastName);

对于这些约定,您可以参考这个链接

更新2

分支管理器的firstName和lastName搜索

代码语言:javascript
复制
Person findFirstByBranchManager_FirstNameAndBranchManager_LastName(String firstName, String lastName);

更新3

正如阿伦·哈达德在注释中提到的那样,这种实践是不可扩展的。

作为一种选择,我给出了一种访问DB查询的替代方法。

您可以创建一个示例对象并将其传递给findAll(Example e)实现的JpaRepository

代码语言:javascript
复制
final Teacher exampleTeacher = new Teacher();
exampleTeacher.setName("Teacher Name");
final Person examplePerson = new Person();
example.setTeacher(exampleTeacher);

现在将这个examplePerson传递给Repository

代码语言:javascript
复制
List<Person> findAll(Example.of(examplePerson));

这将返回所有的人,其教师的名字是Teacher Name

作为C# EntityFramework的替代方案,您可以在Java中使用QueryDSL

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43960667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档