我正在使用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'
?如何配置正确的列名?
答案 0 :(得分:1)
在SpringBoot中,除非您将应用程序属性设置为使用不同的命名类,否则将忽略@Column(name="")
注释。
如果您没有application.properties
,请在src/main/resources
目录中按该名称创建文件。添加以下行:
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy
在其中,您的命名将按您的意愿运作。