Spring Data JPA存储库方法,其属性名称包含特殊字

时间:2018-05-07 11:39:24

标签: java spring-data-jpa

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

@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

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

有没有办法逃避方法语法中的特殊词(“或”,“和”等)?将列重命名为不包含这些单词不是一种选择。

1 个答案:

答案 0 :(得分:1)

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

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

相应地重命名了JPA方法。

MyObj findByNameId(String nameOrId);