Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate SQL查询,mysql中的文本数据类型存在问题_Mysql_Sql_Hibernate - Fatal编程技术网

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

我需要使用hibernate执行sql查询(无映射),但每当MYSQL中的字段具有文本数据类型时,我总是会遇到此错误:

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>