我需要使用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是一个包含查询的String(它与mysql查询引擎一起运行)。如果我将TEXT数据类型更改为varchar,工作正常,但这不是一个选项!
任何线索?
答案 0 :(得分: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>
答案 1 :(得分:0)
快速谷歌(你确实先尝试过这个,对吧?)建议addScalar是你的朋友。