Hibernate 执行DDL时出错";在Spring数据JPA中创建表?

Hibernate 执行DDL时出错";在Spring数据JPA中创建表?,hibernate,spring-boot,jpa,ddl,create-table,Hibernate,Spring Boot,Jpa,Ddl,Create Table,我想保存一些来自请求的数据。为此,我创建了一些实体类。但我为什么要有这个例外呢 Error executing DDL "create table body_datum (body_datum_id integer not null, key varchar(255), value varchar(255), value_type varchar(255), primary key (body_datum_id)) engine=InnoDB" via 这是我的财产 spring.datas

我想保存一些来自请求的数据。为此,我创建了一些实体类。但我为什么要有这个例外呢

Error executing DDL "create table body_datum (body_datum_id integer not null, key varchar(255), value varchar(255), value_type varchar(255), primary key (body_datum_id)) engine=InnoDB" via 
这是我的财产

spring.datasource.url= jdbc:mysql://localhost:3306/loadtestdb?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=create
这是我的模型课

@Data
@Entity
public class BodyDatum {

    @Id
    @GeneratedValue
    private Integer bodyDatumId;

    private String key;

    private String value;

    private String valueType;
}
像这样的产品类别

@Data
@Entity
public class Product {

    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    private Long pId;
    private String productName;
    private int pQty;
    private int price;

    @ManyToOne
    @JoinColumn(name = "customer_id")
    private Customer customer;
}
在数据库中,已创建产品表

为什么会出现这样的错误

谢谢。

我认为属性“key”是SQL的保留字。重命名属性,如下所示:

@Data
@Entity
public class BodyDatum {

    @Id
    @GeneratedValue
    private Integer bodyDatumId;

    private String bodyDatumkey;

    private String value;

    private String valueType;
}

你什么时候有这个例外?你什么时候开始申请?实体是如何创建的?表的创建是由Hibernate完成的,而不是由Spring(数据)完成的。您没有显示完整的错误,但我猜这可能是一个方言问题,即您没有使用正确的数据库方言,因此生成的SQL与数据库的预期不匹配,或者数据库用户没有创建表所需的权限。@RUAROThibault。是的,当我开始申请时。我只是创建了数据库,然后创建了上面提到的实体,然后运行程序。问题是创建了产品表。问题出在其他实体中。@Jenschauder这里是另一个堆栈跟踪。。您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解在“varchar(255)、value varchar(255)、value_type varchar(255)、主键附近使用的正确语法(第1行的body_dat’请不要将stacktraces放在注释中。由于缺少格式,它们几乎无法阅读。但是您可以编辑您的问题并在那里添加stacktrace。将其格式化为代码以获得最佳可读性。您节省了我的时间。但是,我使用的是保留关键字
date
。我认为错误
无效标识r bla bla
完全没有表现力。