当前位置: 首页 > 面试题库 >

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

逄兴昌
2023-03-14
问题内容

我需要使用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,则可以正常工作,但这不是一个选择!

有什么线索吗?


问题答案:

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

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>


 类似资料:
  • 我试图用JOOQ生成这个简单的SQL,但由于某些原因,我无法完成。 我以为会是这样 不幸的是,MySQLDataType已被弃用()。所以我试过了 但是我得到了以下SQL,这是不合法的。 有什么提示吗?

  • 问题内容: 什么是什么?有什么区别? 什么时候需要使用,什么时候需要作为数据类型? 因为for 和,所以有== ,== 。它们甚至具有相同的含义吗? 然后看一下,+ 3个字节,其中。 什么啊 问题答案: TEXT和CHAR将与它们与时间关联的字符集相互转换。BLOB和BINARY仅存储字节。 BLOB用于存储二进制数据,而Text用于存储大字符串。 BLOB值被视为二进制字符串(字节字符串)。它们

  • 主要内容:FLOAT和DOUBLE,浮点数与定点数,TIMESTAMP和DATETIME,char与varchar,BINARY与VARBINARY类型,BLOB类型1.整数类型 2.浮点类型 3.定点数 4.位类型:BIT 5.日期类型 6.文本字符串类型 7.TEXT类型 8.ENUM类型 9.SET类型 10.二进制字符串类型 11.JSON类型 1.整数类型 整数类型 大小 有符号范围 无符号范围 描述 TINYINT 1byte (-128,127) (0,255) 小整数值 SMAL

  • 本文向大家介绍mysql 数据类型TIMESTAMP,包括了mysql 数据类型TIMESTAMP的使用技巧和注意事项,需要的朋友参考一下 在mysql中timestamp数据类型是一个比较特殊的数据类型,他可以自动在你不使用程序更新情况下只要你更新了记录timestamp会自动更新时间 通常表中会有一个Create date 创建日期的字段,其它数据库均有默认值的选项。MySQL也有默认值tim

  • 本文向大家介绍MySQL中TEXT与BLOB字段类型的区别,包括了MySQL中TEXT与BLOB字段类型的区别的使用技巧和注意事项,需要的朋友参考一下 在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程序的博主不知道改为自己的博客正文字段选择TEXT还是BLOB类型。 下面给出几点区别: 一、主要差别 TEXT与BLOB的主要差别就是BLOB保存二进制数据,

  • 主要内容:数值类型,日期和时间类型,字符串类型,二进制类型MySQL 提供了大量的数据类型,为了优化存储和提高数据库性能,在任何情况下都应该使用最精确的数据类型。   前面主要对 MySQL 中的数据类型及其基本特性进行了描述,包括它们能够存放的值的类型和占用空间等。本节主要讨论创建数据库表时如何选择数据类型。   可以说字符串类型是通用的数据类型,任何内容都可以保存在字符串中,数字和日期都可以表示成字符串形式。   但是也不能把所有的列都定义为字符串类