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

@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);

08-16 01:32