1
我正在遷移到休眠4.1並且還添加了對oracle 11g的支持。遷移到4.1似乎與mysql安裝程序一致,我正在調試oracle特定的問題。我有一個問題,在oracle抱怨休眠不正確格式化oracle sql
java.sql.SQLException: ORA-00903: invalid table name
我應該提到這個設置也使用c3p0和ehcache。
導致該異常的查詢是:
DEBUG org.hibernate.SQL -
select
dp.id as id168_,
dp.Description as Descript2_168_,
dp.name as name168_,
case
when dp1_.id is not null then 1
when dp2_.id is not null then 2
when dp.id is not null then 0
end as clazz_
from
.tableA dp
left outer join
.tableB dp1_
on dp.id=dp1_.id
left outer join
.tableC dp2_
on dp.id=dp2_.id
我試圖在SQL Developer的這個查詢,它失敗了。問題似乎與'。'相關。在表名上。如果我刪除這個或在查詢之前把db用戶/模式設置好。
有沒有關閉此設置的設置? 我沒有提供需要的財產嗎?
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
<property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/>
<property name="hibernate.connection.username" value="myUser"/>
<property name="hibernate.connection.password" value="myPassword"/>
<property name="hibernate.connection.url" value="jdbc:oracle:thin://@192.168.X.X:1521:oracledb"/>
<property name="hibernate.archive.autodetection" value=""/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.default_schema" value="public"/>
<property name="hibernate.ejb.cfgfile" value="META-INF/hibernate.cfg.xml"/>
<!-- cache configuration -->
<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory" />
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_query_cache" value="true"/>
<!-- pool configuration -->
<property name="hibernate.connection.provider_class" value="org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider" />
<property name="hibernate.c3p0.max_size" value="50" />
<property name="hibernate.c3p0.min_size" value="5" />
<property name="hibernate.c3p0.acquire_increment" value="1" />
<property name="hibernate.c3p0.idle_test_period" value="17" />
<property name="hibernate.c3p0.max_statements" value="0" />
<property name="hibernate.c3p0.timeout" value="3600" />
<property name="hibernate.c3p0.preferredTestQuery" value="SELECT 1 FROM DUAL"/>
</properties>
我有一個預感與hibernate.default_schema屬性有關,但我還沒有完全探索這個 –
您的數據庫名爲'公共'?因爲default_schema是oracle的數據庫名稱。 –
我的模式與用戶相同,我已經更正了這一點,它似乎允許部署artefact。 –