findById()导致问题/错误(找不到属性ID)

时间:2019-07-09 22:19:17

标签: sql postgresql hibernate spring-boot jpa

我有三个实体。 (在此示例中,我使用xxx作为占位符)

我已经用

设置了他们所有的@Entities
@Entity
@Table(name = "xxx")
public class xxx {

@Id
@Column(name = "xxx_id")
int xxx_id;

但是,我能够做到:

findById(int ...)仅适用于其各自存储库中的一个实体。 当我尝试对其他两个实体执行此操作时,出现此问题:

  

“无效的派生查询!找不到类型xxx的属性ID!”

我能够运行它并获得适当的结果。但是,为什么我对两个实体却出现了这个错误,而另一个实体却没有?

我完全按照相同的方式设置实体及其存储库。 唯一的区别是,在其存储库不返回任何错误的实体中,我将该实体与另一个其存储库发生故障的实体联接在一起,但是我在@JoinColumns部分中使用了“ mappedBy”。

这与为什么一个人没有问题有关吗?

1 个答案:

答案 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命名约定(即,   不要在属性名称中使用下划线,而是使用驼峰式大小写。)

Doc

下划线_ 是Spring数据查询派生中的 保留字符 ,可能允许手动描述属性路径

坚持使用camel-case作为成员变量名称的Java命名约定,一切都会按预期进行。

Also Refer this