【问题标题】:findBy throws error when field name contains underscore当字段名称包含下划线时,findBy 会抛出错误
【发布时间】:2015-02-27 08:48:04
【问题描述】:

我有一个 Item 类,其属性名为 vendor_name,如下所示:

@Entity
@Table(name="item_info")
public class Item {
    @Column(name="vendor_name")
    protected String vendor_name;
    /* Getter/Setter methods */

我正在尝试编写一个 CRUDRepository 接口来根据 vendor_name 返回项目:

@Repository
public interface ItemDAO extends CrudRepository<Item, Integer>{
    public Item findByVendor__name(@Param("vendor_name") String vendor_name);
}

根据文档,如果属性名称中有下划线,那么我们需要通过添加额外的下划线来转义 findBy 方法中的下划线。但是,我仍然收到一条错误消息,提示“没有为类型 Item 找到名为 vendor 的属性”。

我无法从属性中删除下划线。有没有其他方法可以解决这个问题?

【问题讨论】:

  • 尝试转义参数注释中的下划线:@Param("vendor\_name")
  • 您能找到解决问题的方法吗?
  • @Igor 我无法解决这个问题。我将属性名称更新为 vendorName 并改用 findByVendorName()。
  • @drunkenfist 感谢您的回复。是的,我最终也重命名/重新映射了我的专栏。

标签: spring spring-data-jpa


【解决方案1】:

来自 Spring Data JPA 文档:

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

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    相关资源
    最近更新 更多