oracle/hibernate查詢clob字段值死活都爲null

先說下背景:我新入職公司不到兩個月,我們的項目採用的tomcat配置文件鏈接項目webapp,同時由tomcat管理數據源(即在tomcat目錄下conf\Catalina\localhost中配置項目路徑兼數據源),eg:


<?xml version='1.0' encoding='utf-8'?>
<Context docBase="E:\Workspaces\MyEclipse 9\sinopeccoalv1\webapp" reloadable="false" path="\domain" privileged="true" antiResourceLocking="false" antiJARLocking="false">
<Resource name="StandardWorkDataSource" driverClassName="oracle.jdbc.driver.OracleDriver"
    url="jdbc:oracle:thin:@192.168.1.109:1521:orcl"
    username="xxxx"    password="xxxx"
    type="javax.sql.DataSource"
    maxActive="400"
    maxIdle="200"
    maxWait="5000"/>
</Context>

剛來的時候是同事給配置的這個,當初懵懵懂懂的,慢慢知道了這跟直接放到webapp的效果是一樣的。

就這樣開發了一個多月,一直沒什麼異常,今天突然發現同一個項目版本的一個頁面,放在我的機子上運行報錯,copy到同時的機子上運行,完全沒問題。

導致報錯的原因是:在我的機子上hibernate查不到類型爲clob字段的屬性值(沒有拋出任何異常,debug時查看對象的屬性值總爲null),copy到同事的機子上部署後就能查出來了。

所以,主要問題就順理成章的變成了:爲什麼同一個項目放在不同的機器上部署後,有的機器上的項目能查詢出clob字段,有的就查不出來?

經過我一天的排查,原因終於找到了:是因爲我的數據源是有tomcat管理的,而我沒有吧oracle的jar包(oracle14.jar)放到tomcat目錄下的lib中,這樣就導致一些oracle比較特殊的字段類型查不出來數據值,但是從不拋出任何異常(這個比較糾結)。

解決方案:將oracle14.jar放到tomcat目錄下的lib目錄中。(由於在網上沒有找到任何前車之鑑,所以這是我糾結一天的成果,拿出來分享一下。


發佈了35 篇原創文章 · 獲贊 8 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章