例如,我有一个具有以下属性的实体:
@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”等)?重命名该列以不包含这些单词不是一种选择。
最佳答案
一种解决方法是重命名Java字段以避免特殊单词,同时使用@Column
批注保留列名。
@Column(name = "nameOrId")
public String nameId;
JPA方法已相应重命名。
MyObj findByNameId(String nameOrId);