一尘不染

Hibernate SQL QUERY,MySQL中的TEXT数据类型问题

hibernate

我需要使用hibernate模式执行SQL查询(无映射),但是只要字段在MYSQL中具有TEXT数据类型,我都会不断收到此错误:

org.hibernate.MappingException: No Dialect mapping for JDBC type: -1

我不知道该怎么办,映射不是一种选择(数据库中的动态表,因此字段数是可变的)。

这是一段代码:

SQLQuery query = session.createSQLQuery(sql);

Object[] values = (Object[]) query.uniqueResult();

sql是一个包含查询的字符串(使用mysql查询引擎可以正常运行)。如果我将TEXT数据类型更改为varchar,则可以正常工作,但这不是一个选择!

有什么线索吗?


阅读 403

收藏
2020-06-20

共1个答案

一尘不染

这是一个可能的解决方案:

package iam.dirty;
import java.sql.Types;

import org.hibernate.Hibernate;
import org.hibernate.dialect.SQLServerDialect;

public class DialectForGkoloc extends SQLServerDialect {
     public DialectForGkoloc() {
        super();

        registerHibernateType(Types.DECIMAL, Hibernate.BIG_DECIMAL.getName());   
        registerHibernateType(-1, Hibernate.STRING.getName());
        registerHibernateType(Types.LONGVARCHAR, Hibernate.TEXT.getName());
     }

}

修改Hibernate配置文件hibernate.cfg.xml:

<property name="dialect"> 
 org.hibernate.dialect.SQLServerDialect 
</property>

与:

<property name="dialect"> 
 iam.dirty.DialectForGkoloc 
</property>
2020-06-20