【问题标题】:Spring Data JPA CrudRepository method naming confusionSpring Data JPA CrudRepository 方法命名混乱
【发布时间】:2020-02-09 18:09:06
【问题描述】:

假设一个表“Users”包含一个列名“User_Id”

所以我将方法命名为 UserEntity findByUserId(String UserId); ....

但如果有另一个名为“UserId”的列,那么哪一列将获得首选项?

示例表如下所示:

Id    User_Id    UserId   Name

1     xdf23e     xdf23e   testuser

【问题讨论】:

  • 表无关。重要的是你的实体。但坦率地说,无论是表还是实体,拥有一个名为 UserId 的列/属性和另一个名为 User_Id 的列/属性确实是一个可怕的、可怕的想法。这样做是为了寻找错误和问题。
  • 我同意你的观点,我只是想知道实际发生了什么......并且你通过说“重要的是你的实体”来消除疑问......谢谢:)
  • 始终为此使用唯一 ID。所以根本不会重复。

标签: spring-boot spring-mvc jpa spring-data-jpa spring-data


【解决方案1】:

正如@JB Nizet 解释的“重要的是你的实体”,

进一步补充一点,考虑 JPA 与 hibernate 的示例,JPA/Hibernate 将根据您的实体生成名称。如果您在数据库中有两列无关紧要,您始终可以在实体中使用不同的名称,并使用 @Column 注释将它们映射到正确的列。

【讨论】:

    【解决方案2】:

    我同意 JB Nizet 所说的。话说回来: 首先,我总是将 come case 用于实体字段。 (见春季文档

    Spring data documentation 因为我们将下划线字符视为保留字符,所以我们强烈建议遵循标准 Java 命名约定(即,不在属性名称中使用下划线,而是使用驼峰式大小写)。

    如果无法做到这一点,您可以通过双下划线 (__) 对字段名称中的下划线进行转义。

    【讨论】:

      猜你喜欢
      • 2018-08-15
      • 2016-01-29
      • 2020-08-24
      • 2017-08-21
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多