org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
2016-01-10 19:53
519 查看
org.hibernate.MappingException:
No Dialect mapping for JDBC type: -1
Hibernate配置映射映射错误消息:
映射配件错误字段为:
原因:
原来我映射到mysql时,type="text"没问题,因为mysql数据库有这个类型的字段;但我换成Oracle就映射失败,因为Oracle没有这个字段。网上查了下用法如下(试过了在Oracle下行不通,如果换成Mysql并且方言对应Mysql(MySQL5Dialect)则可以):
解决方法(这种方法映射到mysql时有用):写一个类、修改hibernate配置文件。 写一个Dialect的子类,这里我 extends Oracle9Dialect类:
package xxx.xxx; //xxx.xxx自己根据情况来写 import java.sql.Types;
修改Hibernate配置文件hibernate.cfg.xml,把
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
修改为:
<property name="dialect">com.ywx.tiles.tool.DialectForInkfish</property>
在映射到Oracle中只需将type改为clob就行了
No Dialect mapping for JDBC type: -1
Hibernate配置映射映射错误消息:
19:00:50,252 WARN Oracle9Dialect:60 - The Oracle9Dialect dialect has been deprecated; use either Oracle9iDialect or Oracle10gDialect instead 19:00:50,672 ERROR SchemaUpdate:222 - could not complete schema update org.hibernate.MappingException: No Dialect mapping for JDBC type: -1 at org.hibernate.dialect.TypeNames.get(TypeNames.java:77) at org.hibernate.dialect.TypeNames.get(TypeNames.java:100) at org.hibernate.dialect.Dialect.getTypeName(Dialect.java:299) at org.hibernate.mapping.Column.getSqlType(Column.java:208) at org.hibernate.mapping.Table.sqlCreateString(Table.java:418) at org.hibernate.cfg.Configuration.generateSchemaUpdateScript(Configuration.java:1210) at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:187) at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:375) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872) at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:863) at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:782) at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:188) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1545) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:873) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:815) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:730) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:558) at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1120) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) at com.ywx.test.SpringTest.<init>(SpringTest.java:10) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:195) at org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:244) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:241) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) org.hibernate.impl.SessionFactoryImpl@4aa193fe
映射配件错误字段为:
<property name="content" type="text" length="65535"/>这种配置映射到Mysql中可以,映射到Oracle中不行。
原因:
原来我映射到mysql时,type="text"没问题,因为mysql数据库有这个类型的字段;但我换成Oracle就映射失败,因为Oracle没有这个字段。网上查了下用法如下(试过了在Oracle下行不通,如果换成Mysql并且方言对应Mysql(MySQL5Dialect)则可以):
解决方法(这种方法映射到mysql时有用):写一个类、修改hibernate配置文件。 写一个Dialect的子类,这里我 extends Oracle9Dialect类:
package xxx.xxx; //xxx.xxx自己根据情况来写 import java.sql.Types;
package com.ywx.tiles.tool; import java.sql.Types; import org.hibernate.Hibernate; import org.hibernate.dialect.Oracle9Dialect; @SuppressWarnings("deprecation") public class DialectForInkfish extends Oracle9Dialect{ public DialectForInkfish(){ super(); // registerHibernateType(Types.LONGVARCHAR, 65535, "text"); registerHibernateType(Types.DECIMAL, Hibernate.BIG_DECIMAL.getName()); registerHibernateType(-1, Hibernate.STRING.getName()); } }
修改Hibernate配置文件hibernate.cfg.xml,把
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
修改为:
<property name="dialect">com.ywx.tiles.tool.DialectForInkfish</property>
在映射到Oracle中只需将type改为clob就行了
<property name="content" type="clob"/>
相关文章推荐
- iOS 开发的技巧
- AndroidStudio 已确认快捷键, 选择Keymaps: Mac OS X 10.5+
- Android 高版本API方法在低版本系统上的兼容性处理
- Unity3d中3D数学Vector3
- android常见错误汇总2
- 关于学习Swift的一些感受
- Android图像篇
- C#-MVC开发微信应用(6)--用户分组信息管理
- 为App签名
- android常见错误汇总
- iOS中常用的四种数据持久化方法简介
- 【Android】自定义控件实现带百分比显示进度条,可自定义颜色
- ubuntu14.04+eclipse(mars)+hadoop-2.7.1开发环境调试程序出现log4j:WARN no appenders could be found for logger。。
- android OpenGL(二) 定义顶点和着色器
- android OpenGL(一) 开始准备
- Android SearchView结合Filter实现列表检索功能使用总结
- Android SearchView结合Filter实现列表检索功能使用总结
- Android性能优化典范
- iOS开发-命令模式
- iOS 基本对象的用法详解(转载)