Hibernate SQL查询,mysql中的文本数据类型存在问题
我需要使用hibernate执行sql查询(无映射),但每当MYSQL中的字段具有文本数据类型时,我总是会遇到此错误:Hibernate SQL查询,mysql中的文本数据类型存在问题,mysql,sql,hibernate,Mysql,Sql,Hibernate,我需要使用hibernate执行sql查询(无映射),但每当MYSQL中的字段具有文本数据类型时,我总是会遇到此错误: org.hibernate.MappingException: No Dialect mapping for JDBC type: -1 我不知道该怎么办,映射不是一个选项(数据库中的动态表,所以字段的数量是可变的) 下面是一段代码: SQLQuery query = session.createSQLQuery(sql); Object[] values = (Objec
org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
我不知道该怎么办,映射不是一个选项(数据库中的动态表,所以字段的数量是可变的)
下面是一段代码:
SQLQuery query = session.createSQLQuery(sql);
Object[] values = (Object[]) query.uniqueResult();
sql是一个包含查询的字符串(它在mysql查询引擎中运行正常)。如果我将文本数据类型更改为varchar,效果很好,但这也不是一个选项
有什么线索吗?一个快速的谷歌(你确实第一次尝试过这个,对吗?)建议addScalar是你的朋友。这里有一个可能的解决方案:
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>
org.hibernate.dialogue.sqlserverdialogue
与:
我是肮脏的科洛克人
是的,当然,我试过谷歌和addScalar。问题是字段名也是可变的。表名是可变的,字段名是可变的,字段数也是可变的。假设如下:表_x中有字段_1、字段_2、字段_3。表格y和字段1,字段2表格z和字段1,字段2,字段3,字段4,字段5成功了!我要做的唯一更改是删除Hibernate.xxxxx.getName(),并添加一个简单的字符串。例如:registerHibernateType(Types.LONGVARCHAR,“text”)代码>
<property name="dialect">
iam.dirty.DialectForGkoloc
</property>