Spring Boot Hibernate类型使用JSON字段创建异常表

问题描述

我需要带有JSON列的MysqL表,因此我使用了s vladmihalcea / hibernate-types依赖关系,我按照官方文档进行了示例操作,但是我遇到了异常,以及如何克服这个异常。

执行DDL错误”创建表格书(id bigint不为null,isbn varchar(255),属性jsonb,主键(id))engine = InnoDB“通过 JDBC语句

您的sql语法有误;检查手册 对应于您使用正确语法的MysqL服务器版本 第1行的“ jsonb,主键(id))engine = InnoDB”附近

实体类(我承诺使用getter和setter以便在此处清楚地显示代码,并且应该添加getter和setter)

@Entity(name = "Book")
@Table(name = "book")
@TypeDef(
        name = "jsonb",typeClass = JsonBinaryType.class
)
public class Book {

    @Id
    @GeneratedValue
    private Long id;

    @NaturalId
    private String isbn;

    @Type(type = "jsonb")
    @Column(columnDeFinition = "jsonb")
    private String properties;
    
}

存储库接口

@Repository
public interface BookRepository extends JpaRepository<Book,Long> {
}

解决方法

我可以通过更改来解决异常

@TypeDefs({
    @TypeDef(name = "json",typeClass = JsonStringType.class),@TypeDef(name = "jsonb",typeClass = JsonBinaryType.class)
})

代替

@TypeDef(
        name = "jsonb",typeClass = JsonBinaryType.class
)

 @Type(type = "json")
    @Column(columnDefinition = "json")
    private String properties;

代替

 @Type(type = "jsonb")
    @Column(columnDefinition = "jsonb")
    private String properties;

我做错了,我遵循PostgreSQL代码示例而不是mysql