Hibernate Spring引导未从data.sql文件插入数据?

Hibernate Spring引导未从data.sql文件插入数据?,hibernate,spring-boot,Hibernate,Spring Boot,我必须上课,像这样: @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "user_id", unique = true, nullable = false) private int id; @Column(name = "first_name", unique

我必须上课,像这样:

@Entity
@Table(name = "user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "user_id", unique = true, nullable = false)
    private int id;

    @Column(name = "first_name", unique = false, nullable = false)
    private String firstName;

    @Column(name = "last_name", unique = false, nullable = false)
    private String lastName;

    @Column(name = "user_name", unique = true, nullable = false)
    private String username;

    @Column(name = "pass_word", unique = true, nullable = false)
    private String password;

    @Column(name = "roles", unique = false, nullable = false)
    private String roles;

    @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private Set<Contact> contacts = new HashSet<Contact>();
}
application.properties中

spring.datasource.url = jdbc:mysql://localhost:3306/email_project
spring.datasource.username= root
spring.datasource.password= root

logging.level.org.hibernate.SQL= debug

spring.datasource.initialization-mode=always
spring.jpa.hibernate.ddl-auto=create

spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp
data.sql中

 INSERT INTO `email_project`.`user` ( first_name, last_name, user_name, pass_word, roles) VALUES ( 'a','a','a','a', 'ROLE_USER');

INSERT INTO `email_project`.`user` (first_name, last_name, user_name, pass_word, roles)VALUES ( 'b','b','b','b', 'ROLE_USER');

INSERT INTO `email_project`.`contact` (firstName, lastName, displayName, email, photoPath, note, user_id) VALUES ('a', 'a','a','a','a','a', 1)
当我尝试只插入用户时,效果很好。但当我尝试插入联系人时,它失败了。我怎样才能解决这个问题

以下是错误消息的一些合理部分:


org.springframework.jdbc.datasource.init.ScriptStatementFailedException:未能执行SQL脚本语句[file:/F:/Workspaces\u IntelliJ\u Spring\u Projects/MyProject/target/classes/data.SQL]:插入
电子邮件项目
联系人
(名字、姓氏、显示名、电子邮件、照片路径、备注、用户id)值('a','a','a','a','a','a','a',1);嵌套的异常是java.sql.SQLSyntaxErrorException:field list'中的未知列'firstName'

我认为sql可能会将您的列名设置为“first_name”,而不是“firstName”以此类推。如果有关hibernate命名策略的某些方面工作不正常,并且@Column基本上没有在列中设置给定的名称,则可能会发生这种情况

首先检查您的数据库,看看合同表中的列是如何命名的。如果是如我上面所说的那样,在insert中将列名从“firstName”更改为“first_name”应该可以

如果这解决了问题,您还可以尝试添加这些属性值来解决hibernate命名策略:

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