我有三个实体。 (在此示例中,我使用xxx作为占位符)
我已经用
设置了他们所有的@Entities
@Entity
@Table(name = "xxx")
public class xxx {
@Id
@Column(name = "xxx_id")
int xxx_id;
但是,我能够做到:
findById(int ...)
仅适用于其各自存储库中的一个实体。
当我尝试对其他两个实体执行此操作时,出现此问题:
“无效的派生查询!找不到类型xxx的属性ID!”
我能够运行它并获得适当的结果。但是,为什么我对两个实体却出现了这个错误,而另一个实体却没有?
我完全按照相同的方式设置实体及其存储库。
唯一的区别是,在其存储库不返回任何错误的实体中,我将该实体与另一个其存储库发生故障的实体联接在一起,但是我在@JoinColumns
部分中使用了“ mappedBy”。
这与为什么一个人没有问题有关吗?
答案 0 :(得分:3)
findBy ...如何工作?
Entity:
private int clientid;
private String firstname;
private String lastname;
查询:
findBy<Name_as_per_entity>
findByClientid(int clientid);
findByFirstnameAndLastname(String firstname, String lastname)
由于我们将下划线字符视为保留字符,因此我们 强烈建议您遵循以下标准Java命名约定(即, 不要在属性名称中使用下划线,而是使用驼峰式大小写。)
下划线_ 是Spring数据查询派生中的 保留字符 ,可能允许手动描述属性路径
坚持使用camel-case作为成员变量名称的Java命名约定,一切都会按预期进行。