org.hibernate.MappingException: No Dialect mapping for JDBC type: -1

来源:互联网 发布:盗号软件制作 编辑:程序博客网 时间:2024/05/22 03:13

                                  org.hibernate.MappingException: 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 instead19:00:50,672 ERROR SchemaUpdate:222 - could not complete schema updateorg.hibernate.MappingException: No Dialect mapping for JDBC type: -1at 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"/>




1 0
原创粉丝点击