Hibernate没有创建表之一

时间:2019-02-04 21:00:50

标签: spring hibernate spring-boot

我正在学习spring ...,我构建了一个简单的应用程序。 我有一个问题,因为休眠不希望生成模型之一。 我不知道怎么了

import com.fasterxml.jackson.annotation.JsonIgnore;
import javax.persistence.*;
import java.io.Serializable;

@Entity
@Table(name="access_card")
public class AccessCard implements Serializable{

    private static final long serialVersionUID = -4015209774835055079L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="id")
    private Long id;

    @Column(name="key")
    private String key;
    @Column(name="enabled")
    private Boolean enabled;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id", nullable = false)
    @JsonIgnore
    private User user;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public Boolean getEnabled() {
        return enabled;
    }

    public void setEnabled(Boolean enabled) {
        this.enabled = enabled;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}

其他类的编写方式相似,一切正常。 错误:

  

org.hibernate.tool.schema.spi.CommandAcceptanceException:错误   执行DDL“创建表access_card(id bigint不为null,已启用   位,键varchar(255),user_id bigint不为null,主键(id))   通过JDBC语句创建engine = MyISAM

和属性

spring.jpa.hibernate.ddl-auto = update
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

1 个答案:

答案 0 :(得分:0)

按照您的评论,问题在这里指出

key varchar(255)

表名是保留关键字。

请参见https://hibernate.atlassian.net/browse/HHH-4453

如果仍然需要,解决方案是https://vladmihalcea.com/escape-sql-reserved-keywords-jpa-hibernate/