`
忧里修斯
  • 浏览: 432400 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Hibernate3.2.5: No Dialect mapping for JDBC type: -1问题

阅读更多
我的环境是:SQL Server2005 + Hibernate3.2.5

报错如下:

org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
     at org.hibernate.dialect.TypeNames.get(TypeNames.java:56)
     at org.hibernate.dialect.TypeNames.get(TypeNames.java:81)
     at org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:370)
     at org.hibernate.loader.custom.CustomLoader$Metadata.getHibernateType(CustomLoader.java:559)
     at org.hibernate.loader.custom.CustomLoader$ScalarResultColumnProcessor.performDiscovery(CustomLoader.java:485)
     at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:501)
     at org.hibernate.loader.Loader.getResultSet(Loader.java:1796)
     at org.hibernate.loader.Loader.doQuery(Loader.java:674)
     at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
     at org.hibernate.loader.Loader.doList(Loader.java:2220)
     at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
     at org.hibernate.loader.Loader.list(Loader.java:2099)
     at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
     at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
     at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
     at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:152)
     at org.apache.jsp.jsp.ad.do_.download_005fquestionnaire_jsp._jspService(download_005fquestionnaire_jsp.java:104)
     at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
     at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
     at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at com.ibm.crl.inkfish.filters.UserManageFilter.doFilter(UserManageFilter.java:98)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at com.ibm.crl.inkfish.filters.EncodingFilter.doFilter(EncodingFilter.java:31)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
     at java.lang.Thread.run(Unknown Source)

问题原因:

数据库表中有text类型的字段,而Hibernate在native查询中没有注册这个字段,因此发生这个错误。

解决方法:

写一个类、修改hibernate配置文件。 写一个Dialect的子类,这里我 extends SQLServerDialectt类:

package com.zy.util;

import java.sql.Types;

import org.hibernate.Hibernate;
import org.hibernate.dialect.SQLServerDialect;

public class DialectForInkfish extends SQLServerDialect {
public DialectForInkfish() {
   super();
   //registerHibernateType(Types.LONGVARCHAR, 65535, "text");//.LONGVARCHAR
   registerHibernateType(Types.DECIMAL, Hibernate.BIG_DECIMAL.getName()); 
        registerHibernateType(-1, Hibernate.STRING.getName());
}

}

修改Hibernate配置文件hibernate.cfg.xml,把

<property name="dialect"> 
   org.hibernate.dialect.SQLServerDialect
</property>

修改成:

<property name="dialect"> 
   com.zy.util.DialectForInkfish
</property>

说明: 如果你的数据库是mysql,而又用了decimal类型,报错应该是 No Dialect mapping for JDBC type: 3 . 注意这个3, 它说明hibernate不能将这种数据类型映射到你的java类中. 就需要在自定义的方言中用到:

registerHibernateType(Types.DECIMAL, Hibernate.BIG_DECIMAL.getName()); 
分享到:
评论

相关推荐

    hibernate3.2.5

    《Hibernate 3.2.5:持久化框架的里程碑版本》 Hibernate,作为一个开源的对象关系映射(ORM)框架,自其诞生以来就受到了广大Java开发者们的热烈欢迎。特别是3.2.5版本,它是Hibernate发展历史上的一个重要里程碑...

    hibernate3.2.5.rar

    总之,深入学习Hibernate 3.2.5的源码有助于我们更好地理解和运用这个框架,从而提升开发效率,解决实际问题。通过Eclipse工程的实践,我们可以从源码层面洞悉其内部运作,进一步提升自己的Java开发技能。

    hibernate3.2.5源代码

    《深入剖析Hibernate 3.2.5源代码》 Hibernate是一个强大的对象关系映射(ORM)框架,它在Java开发中扮演着至关重要的角色。3.2.5版本是Hibernate历史上的一个重要里程碑,它提供了丰富的功能和稳定性。本文将深入...

    hibernate-3.2.5.源代码....

    1. **对象关系映射(ORM)**:Hibernate的核心功能是提供ORM服务,将Java对象与数据库表之间的映射关系自动化处理。通过XML配置文件(hibernate.cfg.xml)或注解,开发者可以定义实体类与数据库表的对应关系,使得...

    Hibernate3.2.5.jar

    这里的"hibernate3.2.5.jar"是Hibernate 3.2.5版本的主库文件,包含了所有必要的API和实现,使得开发者能够集成Hibernate到他们的应用程序中。 在Hibernate 3.2.5版本中,有以下几个重要的知识点: 1. **实体管理*...

    hibernate-3.2.5.ga.zip

    在"hibernate-3.2.5.ga.zip"这个压缩包中,我们看到的可能是一个较早但仍然被广泛使用的Hibernate版本。 在Hibernate 3.2.5 GA中,包含了一系列重要的特性与改进。首先,这个版本支持JPA(Java Persistence API),...

    hibernate3.2.5GA 全部内容

    《Hibernate 3.2.5 GA 全面解析》 Hibernate 是一款强大的对象关系映射(ORM)框架,它在Java开发中广泛应用于数据库交互,极大地简化了数据操作。3.2.5 GA 版本是Hibernate的一个稳定版本,包含了众多优化和改进。...

    hibernate3.2.5GA

    《Hibernate 3.2.5 GA:持久化框架的核心特性与应用》 Hibernate,作为Java领域内广泛应用的对象关系映射(ORM)框架,为开发者提供了便捷的数据持久化解决方案。3.2.5 GA版本是Hibernate的一个稳定版本,它在3.x...

    hibernate-3.2.5 API 文档

    hibernate-3.2.5 API 文档,官方最新版,这个就不用介绍了吧!

    hibernate-3.2.5.zip

    Hibernate 3.2.5是Java开发中的一款经典对象关系映射(ORM)框架的旧版本,它在Java企业级应用开发中起到了重要的作用。这个压缩包文件包含了Hibernate框架的完整源码、库文件以及相关的文档,使得开发者可以深入...

    hibernate-3.2.5+API文档

    3. **类型系统(Type System)**:Hibernate 3.2.5 引入了更多内置类型,如日期时间类型,以更好地适应各种数据库。 4. **性能优化(Performance Enhancements)**:此版本包括许多性能改进,例如更高效的批处理和...

    spring-jdbc-3.2.5.RELEASE.jar

    spring-jdbc-3.2.5.RELEASE.jar spring-jdbc-3.2.5.RELEASE.jar

    Hibernate3.2.5api(chm)

    Hibernate3.2.5api帮助文档,chm格式 该文档只适合在IE6下使用

    apache-maven-3.2.5.zip

    apache-maven-3.2.5.zip 安装包,apache-maven-3.2.5.zip 安装包apache-maven-3.2.5.zip 安装包apache-maven-3.2.5.zip 安装包apache-maven-3.2.5.zip 安装包apache-maven-3.2.5.zip 安装包apache-maven-3.2.5.zip ...

    hibernate-3.2.5 java doc

    《Hibernate 3.2.5 Java Docs:深入理解ORM框架》 Hibernate,作为一个强大的Java对象关系映射(ORM)框架,极大地简化了数据库操作。它允许开发者使用面向对象的编程方式来处理数据库,从而避免了繁琐的SQL代码。...

    spring2.5+struts2.1.6+hibernate3.2.5整合需要用到的包

    这里我们关注的是一个经典的组合:Spring 2.5、Struts 2.1.6和Hibernate 3.2.5的整合。这三大框架分别承担了不同的职责:Spring作为依赖注入(DI)和面向切面编程(AOP)的核心,Struts提供了模型-视图-控制器(MVC...

Global site tag (gtag.js) - Google Analytics