环境:MySQL5+Hibernate3.2.5,使用JDK1.5
java代码大致这样的:
Session sess = MysqlFactory.openSession(); //MysqlFactory是我自己写得一个类
List list = new ArrayList();
try{
list = sess.createSQLQuery("select * from table_1").list();
sess.flush();
}catch(Exception ex){
ex.printStackTrace();
}finally{
MysqlFactory.closeSession();
}
错误Exception:
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 MySQL5Dialect类:
package xxx.xxx; //xxx.xxx自己根据情况来写 import java.sql.Types;
import org.hibernate.dialect.MySQL5Dialect;
public class DialectForInkfish extends MySQL5Dialect {
public DialectForInkfish() {
super();
registerHibernateType(Types.LONGVARCHAR, 65535, "text");
}
}
修改Hibernate配置文件hibernate.cfg.xml,把
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
修改为:
<property name="dialect">com.ibm.crl.inkfish.config.DialectForInkfish</property>
分享到:
相关推荐
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect <property name="hibernate.show_sql">true <mapping resource="com/myapp/entity/User.hbm.xml"/> <!-- 更多映射文件 --> </session-...
3. 数据库连接池:`hibernate-c3p0.jar` 或 `hibernate-jdbc-logging.jar`等 Hibernate需要一个数据库连接池来高效管理数据库连接。C3P0是一个常用的连接池实现,`hibernate-c3p0.jar`提供了对它的支持。而`...
1. DmDialect-for-hibernate4.0-7.6.0.165.jar:这个文件是达梦数据库的Hibernate方言实现,适用于Hibernate 4.0版本,版本号为7.6.0.165。它包含了处理达梦数据库特有的SQL语法和功能的类,使得Hibernate能正确地...
### hibernate3入门知识点 #### 一、概述 **Hibernate**是一种对象关系映射(Object/Relational Mapping,简称ORM)解决方案,它提供了一种机制,用于将Java对象及其关系映射到关系型数据库中的表及其关系。通过...
【Hibernate Dialect&JDBC.txt】文件可能记录了关于Hibernate框架与达梦数据库交互的方言(Dialect)设置和JDBC配置信息。Hibernate是一个流行的ORM(Object-Relational Mapping)框架,它允许开发者用面向对象的...
### Hibernate配置文件详解 #### 一、概述 Hibernate是一个开源的对象关系映射(ORM)框架,它简化了Java应用程序与数据库交互的过程。在使用Hibernate的过程中,一个关键的配置文件是`hibernate.cfg.xml`。这个文件...
《Hibernate2与Hibernate3连接池配置详解》 在Java的持久层框架中,Hibernate是一个广泛使用的ORM(对象关系映射)工具,它允许开发者将数据库操作转化为对Java对象的操作,极大地提高了开发效率。然而,为了优化...
**步骤3:** 添加库引用。 - 右击项目,选择“Build Path”>“Configure Build Path”。 - 在“Libraries”选项卡中,点击“Add Jars”或“Add External JARs”来添加所需的库。 #### 四、配置Hibernate **步骤1:**...
在这个主题中,我们主要关注的是Hibernate的配置文件`hibernate.properties`以及它的DTD(Document Type Definition)文件,包括`hibernate-configuration-3.0.dtd`和`hibernate-mapping-3.0.dtd`。 首先,`...
1. **hibernate**:代表Hibernate ORM框架,它的核心概念包括实体(Entity)、标识符(Identifier)、属性(Attributes)、映射文件(Mapping Files)、会话(Session)、事务(Transactions)等。 2. **java**:...
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">...
jdbc for scdd <property name="connection.password">scdd oracle.jdbc.driver.OracleDriver <mapping resource="com/hope/scdd/dao/Binoutputreport.hbm.xml" /> </session-factory> </hibernate-...
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect <!-- 可选配置 --> <property name="hibernate.show_sql">true <property name="hibernate.format_sql">true ...
- `dialect`: 定义数据库方言,如`org.hibernate.dialect.MySQL5Dialect`适应MySQL 5的语法。 - `show_sql`和`format_sql`: 分别开启SQL语句的显示和格式化输出,便于调试。 - `hbm2ddl.auto`: 自动处理数据库表...
<property name="dialect">org.hibernate.dialect.MySQL5Dialect <!-- 显示SQL --> <property name="show_sql">true <!-- 自动创建表 --> <property name="hbm2ddl.auto">create <!-- 映射文件位置 --> ...
- **Dialect**: `<property name="hibernate.dialect">`设置数据库方言,如`org.hibernate.dialect.MySQL5Dialect`,确保Hibernate能正确处理特定数据库的SQL语法。 - **Show SQL**: `<property name="hibernate....
### Hibernate 3.x 参考手册关键知识点解析 #### 一、快速入门与Tomcat集成 **1.1 快速开始使用 Hibernate** - **环境准备:** - 使用 Hibernate 前需确保 Java 环境已安装配置。 - 下载 Hibernate 3.x 版本库...
- 首先需要在项目中添加`hibernate3.jar`以及其他相关依赖库(如连接数据库所需的JDBC驱动),并通过设置`CLASSPATH`环境变量确保这些库被正确引用。 - **数据库准备:** - 根据应用需求创建相应的数据库及表结构...
3. **查询语言**:Hibernate支持HQL(Hibernate Query Language),这是一种面向对象的查询语言,类似于SQL,但操作的是对象而非表格。此外,Hibernate还支持Criteria API,提供了一种更面向对象的查询方式。 4. **...