【发布时间】:2017-03-22 04:24:05
【问题描述】:
我正在使用 Spring-boot 1.4.1.RELEASE,通过 Spring Data 和 Hibernate 将一些数据持久化到 MySQL 数据库中。
我有这门课,Respondent,用@Entity 注释,其中一个字段注释如下:
@Column(name = "firstName", nullable = false, length = 100)
private String firstName;
当我尝试通过在其CrudRepository<Respondent, Long> 上调用save() 将受访者保存到数据库时,我收到此错误:
ERRORcom.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'first_name' in 'field list'
此错误在我为该字段添加 @Column 注释之前就开始发生了,所以我认为将 firstName 映射到 first_name 是一些默认的 Hibernate 行为,但我已经添加了 @Column 注释并没有任何改变.还是错了吗?我已经用mvn clean package 重建了应用程序。
这是我的受访者实体:
@Entity
public class Respondent {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(name = "firstName", nullable = false, length = 100)
private String firstName;
private String tussenvoegsel;
@Column(name = "lastName", nullable = false, length = 100)
private String lastName;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "Company_id", nullable = false)
private Company company;
【问题讨论】:
-
您确定“firstName”列存在吗?另外,通常我从不使用@entity 类中未注释的任何声明文件,例如“private String tussenvoegsel;”
-
100% 确定。它的 first_name 不存在,并且 hibernate 仍在映射我的字段。
-
尝试将
@Column(name = "firstName"改为小写@Column(name = "firstname"。 -
似乎您在配置stackoverflow.com/questions/376093/hibernate-column-name-issues 中设置了ImproveNamingStrategy。你能发布你的休眠配置类吗?
标签: mysql hibernate spring-boot spring-data spring-data-jpa