2015-05-26 89 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>