尝试使用休眠模式将内容插入MySQL时遇到以下错误,该错误是由于其中之一是MysQL中的“ mediumtext”数据类型,但在我的实体类中我将该字段声明为String.
Initial sessionFactory creation failed.org.hibernate.HibernateException: Wrong column type in db_test.articles for column content. Found: mediumtext, expected: varchar(255)
Exception in thread "main" java.lang.ExceptionInInitializerError
我在Google搜索上找到了一些帖子,并将以下类复制到我的“ src / main / java / persistence目录”中:
public class MySQLDialect extends org.hibernate.dialect.MySQLDialect
{
public MySQLDialect()
{
super();
System.out.println("MyMySQLDialect created new instance!");
}
protected void registerVarcharTypes() {
System.out.println("MyMySQLDialect: registering VarCharTypes");
registerColumnType(Types.VARCHAR, 16777215, "mediumtext");
registerColumnType(Types.VARCHAR, 65535, "text");
registerColumnType(Types.VARCHAR, 255, "varchar($1)");
registerColumnType(Types.LONGNVARCHAR, "longtext");
}
}
但是我不知道如何让Hibernate知道这种自定义数据类型.谢谢
解决方法:
我通过使用“ columndefinition = mediumtext”解决了我的问题,因为我发现使用Hibernate中的“ update”功能来自动更新MySQL列数据类型.现在一切正常.