如何解决Spring JPA 存储库无法解析实体的属性
我正在尝试对表格的两列进行简单搜索。
@Entity
@Table(name = "CUSTOMER")
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "CUSTOMER_ID",nullable = false)
private int customer_id;
@Column(name = "FirsT_NAME",nullable = false)
private String first_name;
@Column(name = "LAST_NAME",nullable = false)
private String last_name;
@Column(name = "PHONE_NUMBER",nullable = false)
private String phone_number;
@Column(name = "EMAIL")
private String email;
我的 customerRepository 类代码:
@Repository
public interface CustomerRepository extends JpaRepository<Customer,Integer> {
List<Customer> findAllByFirst_nameAndLast_name(String firstName,String lastname);
}
在编译和运行 springBoot 时出现此错误:
nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List com.owl.owlserver.repositories.CustomerRepository.findAllByFirst_nameAndLast_name(java.lang.String,java.lang.String)! No property first found for type Customer!
所以它无法检测到客户对象中的字段,我应该以某种方式将客户类导入存储库吗?
解决方法
问题在于你的snake_case命名约定,建议使用camelCase命名约定。
正如 Spring 文档所说:
因为我们将下划线字符视为保留字符,所以我们 强烈建议遵循标准的 Java 命名约定(即, 不在属性名称中使用下划线,而是使用驼峰式大小写)。
您可以看到相关的 JIRA 问题 here -- 属性名称中不支持下划线。
,我建议按照标准将属性保存在骆驼箱中
因为我们将下划线字符视为保留字符,我们强烈建议遵循标准的 Java 命名约定(即,不要在属性名称中使用下划线,而是使用驼峰式大小写)。
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "CUSTOMER_ID",nullable = false)
private int customerId;
@Column(name = "FIRST_NAME",nullable = false)
private String firstName;
@Column(name = "LAST_NAME",nullable = false)
private String lastName;
@Column(name = "PHONE_NUMBER",nullable = false)
private String phoneNumber;
@Column(name = "EMAIL")
private String email;
然后查询以及每Property Expressions
List<Customer> findAllByFirstNameAndLastName(String firstName,String lastname);
,
Spring JPA 的重点是使用 Repository 中定义的方法简化查询构建。约定是使用驼峰命名法命名实体中的字段,在编写查询方法时也是如此。只需将实体字段的命名从蛇形大小写更改为驼色大小写即可。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。