Hibernate中的Longvarchar

时间:2018-02-01 15:36:12

标签: java database hibernate spring-boot

这是财产,

@Column( name = "description")
private String description;

这是MySql表 enter image description here

在编译期间抛出此错误,

  

引起:org.hibernate.tool.schema.spi.SchemaManagementException:模式验证:表[product]中的[description]列中遇到错误的列类型;找到[longtext(Types#LONGVARCHAR)],但期待[varchar(255)(Types#VARCHAR)]

我缺少什么?

3 个答案:

答案 0 :(得分:9)

您可以修改数据库:

ALTER TABLE product MODIFY description VARCHAR(255);

如果描述值超过255个字符,则此简单ALTER TABLE命令可能会失败,因此您可能需要通过创建新列并转换值并删除原始列来执行此操作。

或者您可以调整Java代码:

@Lob
@Column(name = "description", columnDefinition = "LONGTEXT")
private String description;

您可以先尝试省略columnDefinition,它可能是Hibernate的默认MySQL文本LOB。

答案 1 :(得分:4)

我使用@Type(org.hibernate.annotations.Type;),它起作用了:

`addresses` text CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL

@Column(columnDefinition = "text")
@Type(type = "text")
private String addresses;

答案 2 :(得分:0)

对我来说,有效

@Column(name = "DeckName", n`enter code here`ullable = true, columnDefinition = "nvarchar(MAX)")