spring - findById() 给出没有找到属性 ID
问题描述
我有三个实体。(我使用 xxx 作为这个例子的占位符)
我已经设置了他们所有@Entities
的
@Entity
@Table(name = "xxx")
public class xxx {
@Id
@Column(name = "xxx_id")
int xxx_id;
但是,我能够做到:
findById(int ...)
仅适用于其各自存储库中的一个实体。当我尝试对其他两个实体执行此操作时,我遇到了这个问题:
“无效的派生查询!找不到类型 xxx 的属性 ID!”
我能够运行它并获得正确的结果。但是为什么我会为两个实体而不是另一个实体收到此错误?
我以完全相同的方式设置实体及其存储库。唯一的区别是,在其存储库不返回任何错误的实体中,我将该实体与另一个存储库失败的实体连接起来,但我在该部分中使用了“mappedBy”@JoinColumns
。
这可能与为什么那个人没有问题有关吗?
解决方案
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 Data 查询派生中的保留字符,可能允许手动属性路径描述。
坚持使用 骆驼大小写成员变量名称的 Java 命名约定,一切都会按预期工作。
推荐阅读
- python - 将包含混合字体的word文档转换为unicode
- python - 如何使用python保存多个模型
- sql - 需要将行数据加入Oracle中的列
- javascript - 使用正则表达式从 Base64String 替换 URI 前缀
- pyparsing - pyparsing : 在日期之间分组文本
- firebase - 如何在 Nativescript App 中从 Firebase 数据创建评论/评论部分?
- excel - 这个特定的代码可能出了什么问题?我正在尝试计算值 <= 7 的单元格
- javascript - 如何根据多个属性选择特定选项?
- ssl - 使用 Cloudflare SSL 证书 + nginx letencrypt 证书进行双重加密?
- vb.net - 实体框架“添加”函数添加两个对象而不是一个