`
canofy
  • 浏览: 829744 次
  • 性别: Icon_minigender_1
  • 来自: 北京、四川
社区版块
存档分类
最新评论

Hibernate中text字段诡异出错

阅读更多
Hibernate中text字段诡异出错
描述:最初的sql语句如下:
select a.game_id,ifnull(cid,0) as cid,ifnull(fullname,'') as title,format_name,file_size*1024 as size, 
ifnull(c.name,'') as mobileBrand,ifnull(d.series,'') as series,ifnull(description,'') as description,ifnull

(image_url,'') as image,
concat(download_url,'.',format_name) as url,ifnull(keywords,'') as keywords
from t_game_serise a left JOIN t_games b on a.game_id=b.game_id  
left join t_brand c  on a.brand_id=c.brand_id 
left join t_series d  on a.brand_id=d.id  order by b.rank 

由于series,url等字段的是varchar(2000),因此在查询后由于使用了ifnull()以及concat()函数之后变成了text类型,估计是有些

字段值比较长的缘故,因为在长度比较小的情况下使用ifnull()和concat函数时并不会改变varchar类型。

问题:在使用jdbc的时候肯定是没有问题的,但在使用hibernate的时候就出错,出错信息如下:No Dialect mapping for JDBC

type: -1;原因就是由于sessionFactory.getCurrentSession().createSQLQuery(mostPopularFilmsSQL).list()造成的,具体原因

好像是和hibernate的方言有关系。

解决办法:使用cast()函数把text类型转换成char类型,改变之后的sql语句如下:
select game_id,'5012',cid,title,format_name,size,mobileBrand,cast(series AS CHAR(2000)),
cast(description as CHAR(2000)),cast(image as char(2000)),cast(url as char(2000)),cast(keywords as char(2000))
from
(
select a.game_id,ifnull(cid,0) as cid,ifnull(fullname,'') as title,format_name,file_size*1024 as size, 
ifnull(c.name,'') as mobileBrand,ifnull(d.series,'') as series,ifnull(description,'') as description,ifnull

(image_url,'') as image,
concat(download_url,'.',format_name) as url,ifnull(keywords,'') as keywords
from t_game_serise a left JOIN t_games b on a.game_id=b.game_id  
left join t_brand c  on a.brand_id=c.brand_id 
left join t_series d  on a.brand_id=d.id  order by b.rank 
) e

上面的sql语句通过Hibernate执行顺利通过~~~

总结:hibernate的通过hql语句查询带有text字段时不会有错,当通过sql语句查询带有text字段时则会出现No Dialect mapping for JDBCtype: -1 的错误信息。
分享到:
评论

相关推荐

    mysql 让hibernate支持text字段的方言

    本文将深入探讨如何使Hibernate支持MySQL中的`TEXT`字段,以及`MYSQLDialect.java`在这个过程中的作用。 在MySQL中,`TEXT`字段类型用于存储大量的文本数据,包括`TINYTEXT`, `TEXT`, `MEDIUMTEXT`, 和 `LONGTEXT`...

    Hibernate更新某些字段

    在 Hibernate 中, update 方法可以更新整个对象的所有字段。如果我们直接使用 Session.update(Object o) 方法,Hibernate 会生成一个更新所有字段的 SQL 语句。这可能会导致性能问题,特别是当某些字段类型是文本...

    Hibernate_query查询数据表中的一个字段.

    本篇将详细讲解如何使用Hibernate进行查询,特别是针对数据表中的一个特定字段。 一、Hibernate简介 Hibernate是Java领域的一个开源ORM框架,它简化了数据库操作,通过映射Java类到数据库表,可以将数据库操作转化...

    Hibernate中对表某个字段排序

    Hibernate中对表某个字段排序,直接在配置里面实现排序功能。

    注意hibernate查单一字段和查两个以上的字段返回的结果

    标题中的“注意hibernate查单一字段和查两个以上的字段返回的结果”暗示了这个话题将围绕Hibernate框架在查询数据时,根据查询条件的不同(单个字段与多个字段)可能产生的不同结果进行讨论。Hibernate是Java领域的...

    Hibernate读取blob字段

    本篇文章将深入探讨如何使用Hibernate读取数据库中的Blob字段,以及涉及到的相关知识点。 首先,我们需要理解Blob类型在数据库中的含义。Blob是Binary Large Object的缩写,它是一种可以存储大量二进制数据的数据...

    Hibernate存储Clob字段的方式总结

    Hibernate存储Clob字段的方式总结涉及了在Java开发中使用Hibernate操作大型文本字段Clob的操作方法。本文主要介绍了两种操作Clob字段的方法,一种是将Clob字段直接映射为String类型,另一种是使用Clob类型进行处理。...

    spring+hibernate 解决大字段(clob)

    本文将详细介绍如何在Spring与Hibernate框架结合的情况下,有效地处理Oracle 10g数据库中的CLOB字段。 #### 一、环境配置 为了确保项目能够顺利运行,首先需要搭建好开发环境。本示例中使用的环境配置如下: 1. *...

    Hibernate_query查询数据表中部分字段.

    本文将深入探讨如何使用Hibernate进行数据表中的部分字段查询,这在实际开发中是非常常见的需求。 首先,理解Hibernate的核心概念:实体(Entity)、持久化类(Persistent Class)和映射文件(Mapping File)。实体...

    hibernate使用中与各种数据库字段类型对应类型训练

    本篇将主要围绕Hibernate在与各种数据库字段类型对应的Java类型进行讲解,以及如何在实际项目中进行训练。 一、Hibernate与数据库字段类型的映射 1. 基本类型映射: - Integer -> int, Smallint - Long -> ...

    Hibernate 配置跟数据库字段的对应关系

    本文将深入探讨如何在Hibernate配置中设置与数据库字段的对应关系,以及相关的Mysql数据库数据类型。 首先,我们需要理解Hibernate的核心配置文件`hibernate.cfg.xml`,在这个文件中,我们定义了数据源、持久化类...

    hibernate根据字段生成数据库表

    ### Hibernate根据字段生成数据库表 #### 一、概述 在软件开发过程中,特别是在进行多数据库支持的应用程序开发时,我们经常需要将同一套代码部署到不同的数据库系统上。这种情况下,手动为每个数据库创建相同的表...

    jdbc+hibernate存取blob字段

    本篇将详细介绍如何使用JDBC(Java Database Connectivity)与Hibernate框架来操作Oracle数据库中的BLOB字段。 首先,Oracle数据库的BLOB字段提供了对大对象的高效存储,它的性能优于LONG字段,尤其适合存储大容量...

    Hibernate操作Oarcle中Clob、Blob字段小结

    在Java的持久化框架Hibernate中,处理大数据类型如Oracle数据库中的Clob(Character Large Object)和Blob(Binary Large Object)字段是一项重要的任务。Clob通常用于存储大量的文本数据,而Blob则适用于二进制...

    hibernate实体映射文件字段设置默认值

    ### Hibernate实体映射文件字段设置默认值 在Hibernate框架中,实体映射文件(通常为`.hbm.xml`)用于定义Java对象与数据库表之间的映射关系。这其中包括了属性到数据库表列的映射、主键生成策略、以及一些高级特性...

    用Hibernate实现领域对象的自定义字段

    这个接口要求我们重写一些关键方法,如`nullSafeGet()`、`nullSafeSet()`、`equals()`、`hashCode()`等,以便Hibernate知道如何从数据库中读取和写入这些字段。 ```java public class DateRangeType implements ...

    hibernate@注解方式配置实体类,调用javadoc接口生成数据库表及字段的注释说明

    hibernate@注解方式配置实体类时,利用javadoc接口生成数据库表及字段的注释说明,支持oracle、sqlserver、db2、mysql数据库。因用到java\lib\tools.jar,需要将该jar放入工程lib下(或者tomcat\lib下、或加入...

    Spring+Hibernate处理Oracle lob字段(一)

    在本文中,我们将深入探讨如何在Java环境下,利用Spring和Hibernate框架处理Oracle数据库中的LOB(Large Object)字段。LOB字段通常用于存储大体积的数据,如文本、图片或视频。在实际开发中,处理这类数据时可能会...

Global site tag (gtag.js) - Google Analytics