2017-05-10 27 views
0

我正在使用具有CLOB列的表(Oracle)。我正在使用Hibernate來查詢表格。這裏是一個快速瀏覽一下班,我使用映射Oracle表:如何獲得Java/Hibernate中CLOB的長度

@Entity 
@Table(name="D2D_OPD_ORDERDELIVERY") 
public class D2dOpdOrderDelivery implements Serializable { 

// other column mappings omitted for brevity 

@Column(name="POD_SIGNATURE_IMG", nullable=true) 
@Lob 
private Clob podSignatureImage; 

我已經成功地設法運行的Hibernate查詢,從數據庫返回單行:

// Create a Hibernate query (HQL) 
Query query = session.createQuery("FROM D2dOpdOrderDelivery WHERE orderNumber = :orderNumber"); 
query.setParameter("orderNumber", orderNumber); 

在我的代碼中的其他地方,我對我的Clob執行空檢查 - 它不是null。接下來,我嘗試獲取我的Clob的長度。這是我遇到問題的地方。我收到以下錯誤:

java.sql.SQLException: Closed Connection 
    oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:113) 
    oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:147) 
    oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:209) 
    oracle.sql.CLOB.getDBAccess(CLOB.java:1212) 
    oracle.sql.CLOB.length(CLOB.java:223) 

對不起,我只是不明白爲什麼我得到這個錯誤。我已經運行了我的查詢(行中的所有其他字段都存在)。爲什麼我無法獲得CLOB的長度?

有人可以指出我出錯的地方嗎?

謝謝。

回答

0

好的,在發佈這個問題後,我回去搜索了更多的互聯網。我想我這樣做了之前我貼我的問題的一個不錯的工作 - 但那是另一回事...

反正我在這裏找到有用的鏈接: http://www.javavids.com/video/how-to-read-data-from-blob-using-jpa-hibernate.html

而改變我我的代碼所做的:

@Column(name="POD_SIGNATURE_IMG", nullable=true) 
@Lob 
@Basic(fetch=FetchType.LAZY) 
private char[] podSignatureImage; 

當時我能夠調用。長度在我的char []

希望這有助於別人...