2014-10-11 28 views
0

我想使用EJB從數據庫加載BLOB。使用j2ee加載BLOB對於實體bean的BLOB屬性總是爲空

問題:BLOB屬性也是空的。

團塊屬性看起來像這樣在bean:

@Column(name = "REPORT_PARAMETER", length = 50000) // tried already: removing "length" 
@Lob 
@Basic(fetch = FetchType.EAGER) // tried already: uncomment, changing to "LAZY" 
private byte[] reportParameters; 

我加載豆這樣的:

TestCacheDataBE data= (TestCacheDataBE) em.find(TestCacheDataBE.class, cacheId); 

裝載的作品,我可以讀取所有其他屬性的罰款。只有BLOB屬性始終爲空。

數據庫中有數據。一個SELECT向我顯示BLOB列不爲空。

select dbms_lob.getlength(report_parameter) 
from T_REPORT_CACHE; 

上面的語句顯示了我,BLOB列中有數據。

的數據也使用bean和EntityManager的這樣就節省:

em.persist(data); 

但節能工作正常!

所以唯一的問題是將數據庫中的BLOB數據加載到bean中。保存工作,並加載所有其他數據工作也。

我使用weblogic 10,Java 1.5。

回答

0

所以我們解決了這個問題。我會爲其他人記錄解決方案,因爲顯然,沒有人知道答案。

這是一個驅動程序問題。我們用的Weblogic驅動程序:

<jdbc-driver-params> 
<url>jdbc:bea:oracle://domain:1541</url> 
<driver-name>weblogic.jdbc.oracle.OracleDriver</driver-name> 

它與Oracle驅動程序:

<jdbc-driver-params> 
<url>jdbc:oracle:thin:@domain:1542:abcd</url> 
<driver-name>oracle.jdbc.driver.OracleDriver</driver-name> 

有趣的事實: 它使用與WebLogic驅動程序(在Windows 7)的工作。但是有些東西改變了,它不再工作了(也許Windows更新或Oracle數據庫更新改變了一些東西)。現在只適用於Oracle驅動程序。我們部署在Linux服務器上,它仍然可以與Weblogic驅動程序一起使用。