Spring Jpa 实体类字段与数据库关键字冲突解决

一般情况下实体类字段不建议取会与数据库关键字相同的名字,但总会有些特殊情况


比如下面这个情况,在使用MySQL的时候会出现错误(但是使用h2的MySQL模式不会有问题)

@Entity
public class Category {

    @GeneratedValue
    @Id
    private int id;
    @Column(unique = true, nullable = false, length = 64)
    private String name;
    @Column
    private String desc;
    @Column(nullable = false)
    private Date created;
    @Column(nullable = false)
    privte Date modified;
}
Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Unable to execute schema management to JDBC target [create table category (id integer not null auto_increment, created datetime not null, desc varchar(255), modified datetime not null, name varchar(64) not null, primary key (id))]

这里是因为 desc 是 MySQL 里面的关键字,导致转换成sql语句后执行出现异常


解决方法

  • 把对应的@Column 改为 @Column(name = “[desc]”) 或者自定义一个其他名字

你可能感兴趣的:(开发笔记)