即使指定了错误的列名称

时间:2016-03-18 14:31:53

标签: java spring hibernate jpa spring-boot

我正在使用Spring Data JPA + Hibernate进行Spring Boot项目进行数据访问,但我遇到了一个奇怪的问题。

在我的Entity类中,我指定了以下列:

@Entity
@Table(name = "Subjects")
public class Subject {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;
    @Column(name="InsertionDate")
    private Date insertDate;

    // get + set...
}

当我尝试执行repo.findAll()时,我得到了这个例外:

com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name 'insertion_date'.

我的配置有什么问题?为什么Hibernate会搜索'insertion_date'而不是'InsertionDate'?如何配置正确的列名?

1 个答案:

答案 0 :(得分:1)

在SpringBoot中,除非您将应用程序属性设置为使用不同的命名类,否则将忽略@Column(name="")注释。

如果您没有application.properties,请在src/main/resources目录中按该名称创建文件。添加以下行:

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

在其中,您的命名将按您的意愿运作。

参考:Spring Boot + JPA : Column name annotation ignored