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

标签 mysql hibernate spring-boot spring-data spring-data-jpa

我正在使用 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/

相关文章:

mysql - 如何使用多列和自动递增 ID 创建主键?

php - 每个人显示一个按日期排序的结果

java - 如何查找实体类中没有属性

spring-mvc - Spring Boot - 部署为 WAR 时从 WEB-INF/文件夹加载 'logback.xml'

tomcat - Spring Boot,端口443可能已在使用中,或者连接器配置错误

java - Spring GetMapping 返回 View ,但 PostMapping 返回错误

mysql - MySQL 查询数百万条记录、group by 和 join 的速度较慢

PHP 和 MySQL。查看主题日期

java - 如何将图像添加到 JavaFx TableView 列中

mysql - 我在哪里可以看到 Eclipse 中的差异 "Hibernate Console Configurations"