例如,我有一个具有以下属性的实体:
@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”属性。
有没有办法逃避方法语法中的特殊词(“或”,“和”等)?将列重命名为不包含这些单词不是一种选择。
答案 0 :(得分:1)
解决方法是重命名Java字段以避免使用特殊字词,同时使用@Column
注释保留列名称。
@Column(name = "nameOrId")
public String nameId;
相应地重命名了JPA方法。
MyObj findByNameId(String nameOrId);