2015-05-26 52 views
1

我试图连接到Oracle 12c使用休眠版本3.6.10.Final。 当我做 org.hibernate.cfg.configuration.buildSessionFactory()休眠Oracle 12c无法确定方言

我得到

org.hibernate.HibernateException:无法确定方言使用[名称=甲骨文,majorVersion = 12];用户必须注册解析器或明确设置'hibernate.dialect'。

当我使用Oracle 11g时,我没有这个问题,方言被自动检测到org.hibernate.dialect.Oracle10gDialect。 为什么对于Oracle 12c它不起作用。

感谢

+0

也许是因为你的Hibernate的过时的版本早于甲骨文12C? –

回答

0

休眠3.6.10不支持Oracle 12 StandardDialectResolver无法解决方言Oracle12

0

休眠在您的版本无法猜测与Oracle12c使用什么方言。 但是,您可能会强制使用Oracle10方言。

这里是一个弹簧配置和databasePlatform属性来完成这项工作。

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
<property name="dataSource" ref="dataSource"/> 
<property name="jpaVendorAdapter"> 
    <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
    <property name="generateDdl" value="true"/> 
    <property name="showSql" value="true" /> 
    <!-- this property forces Oracle10 on Oracle12c since Hibernete cannot guess it! --> 
    <property name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect"/> 
    </bean> 
</property>