Hibernate的问题hbm2ddl.auto = validate和MySQL文本类型

时间:2011-05-10 15:45:59

标签: java mysql hibernate hbm2ddl

我试图在我继承的项目上启用hbm2ddl.auto = validate。我现在为String属性获取了许多错误的列类型异常,这些异常使用text或mediumtext(MySQL数据库)进行映射。

映射是:

@Column(name = "DESCRIPTION", nullable = false, length = 65535)
@Length(max = 65535)
@NotNull
public String getDescription() {
    return this.description;
} 

db中的数据类型是'text'(utf8_general_ci)。

我认为这应该是正确的映射,但Hibernate抱怨它发现了文本但是期待长篇文章。

我检查了hibernate配置,但没有指定对话框。我添加了

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>

但这似乎没有什么区别。

我知道我可以将columnDefinition =“text”添加到映射中,但我必须在很多地方这样做,并且恕我直言映射应该是正确的。出了什么问题?有什么想法吗?

由于

1 个答案:

答案 0 :(得分:8)

您必须将columnDefinition添加到@Column注释中,如下所示:

@Column(name = "DESCRIPTION", nullable = false, length = 65535, columnDefinition="TEXT")