问题描述
我需要带有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