【问题标题】:Spring Data JPA repository method with property name containing a special word属性名称包含特殊单词的 Spring Data JPA 存储库方法
【发布时间】:2018-06-07 00:29:25
【问题描述】:

例如,我有一个具有以下属性的实体:

@Entity
public class MyObj {
    public String nameOrId;
}

然后我继续创建存储库

public interface MyObjRepository extends JpaRepository<MyObj, String> {
    MyObj findByNameOrId(String nameOrId);
}

这失败了,因为似乎 Spring 将方法名称标记为 findBy Name Or Id,而不是 findBy nameOrId

产生的错误是“名称”属性未找到(或类似)。

有没有办法转义方法语法中的特殊词(“Or”、“And”等)?将列重命名为不包含这些单词不是一种选择。

【问题讨论】:

  • 我不确定你是否可以在你的方法语法中转义那种特殊的词。您可能必须在您的方法之上添加一个 @Query 注释,以便为 JpaRepository 提供您想要执行的查询

标签: java spring-data-jpa


【解决方案1】:

一种解决方法是重命名 Java 字段以避免特殊单词,同时使用 @Column 注释保留列名。

@Column(name = "nameOrId")
public String nameId;

JPA 方法被相应地重命名。

MyObj findByNameId(String nameOrId);

【讨论】:

    猜你喜欢
    • 2020-09-13
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 2017-08-20
    • 2020-08-24
    • 2019-06-10
    • 2017-01-06
    相关资源
    最近更新 更多