gpt4 book ai didi

mysql - Spring Data 似乎不理解@Column 名称

转载 作者:行者123 更新时间:2023-11-29 04:36:20 25 4
gpt4 key购买 nike

我正在使用 Spring-boot 1.4.1.RELEASE,以及 Spring Data 和 Hibernate 将一些数据保存到 MySQL 数据库中。

我有这门课,Respondent , 注释为 @Entity和注释如下的字段之一:

@Column(name = "firstName", nullable = false, length = 100)
private String firstName;

当我尝试通过调用 save() 将受访者保存到数据库时在其 CrudRepository<Respondent, Long> ,我得到这个错误:

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;

最佳答案

默认情况下,Spring 使用 jpa.SpringNamingStrategy 生成表名。

ImprovedNamingStrategy 会将 CamelCase 转换为 SNAKE_CASE,而 EJB3NamingStrategy 只是使用未更改的表名。

您可以尝试将 naming_strategy 更改为:

spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy

或者 @Column name 属性应该是小写的 @Column(name = "firstname")


对于 Hibernate 5 这应该可以工作(我不太确定您是否还需要上面的那个。但是请尝试两者):

spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

关于mysql - Spring Data 似乎不理解@Column 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40488674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com