使用registerColumntype for hibernate在MySQL中使用mediumtext

Ton*_*yGW 5 mysql string varchar hibernate dialect

我在尝试使用 hibernate 将内容插入到 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
Run Code Online (Sandbox Code Playgroud)

我在谷歌搜索上找到了一些帖子,并将以下类复制到我的“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");
    }
}
Run Code Online (Sandbox Code Playgroud)

但我不知道如何让Hibernate知道这个自定义数据类型。谢谢

Ton*_*yGW 4

我通过使用“columndefinition=mediumtext”解决了我的问题,因为我想出了使用Hibernate中的“更新”功能来自动更新MySQL列数据类型。现在一切正常了。