2017-05-10 2 views
0

Ich arbeite mit einer Tabelle (Oracle), die eine CLOB-Spalte hat. Und ich verwende Hibernate, um die Tabelle abzufragen. Hier ist ein kurzer Blick auf die Klasse, die ich die Oracle-Tabelle kartieren bin mit:Wie bekomme ich die Länge von CLOB in Java/Hibernate?

@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; 

ich erfolgreich geschafft haben, die Hibernate-Abfrage ausführen, die eine einzelne Zeile aus der Datenbank zurückgibt:

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

Anderswo in meinem Code, führe ich einen Null-Check auf meinem Clob - es ist NICHT null. Als nächstes versuche ich die Länge meines Clobs zu bekommen. Und hier stoße ich auf ein Problem. Ich erhalte die folgende Fehlermeldung:

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) 

Sorry, ich verstehe einfach nicht, warum ich diese Störung erhalte. Ich habe meine Abfrage bereits ausgeführt (alle anderen Felder in der Zeile sind vorhanden). Warum kann ich nicht die Länge meines CLOBs bekommen?

Kann jemand bitte darauf hinweisen, wo ich falsch gelaufen bin?

Vielen Dank.

Antwort

0

OK, nachdem ich diese Frage gestellt hatte, ging ich zurück und durchsuchte das Internet noch ein wenig. Ich dachte, ich einen ziemlich guten Job dieser vor getan hatte ich meine Frage geschrieben - aber das ist eine andere Sache ...

Wie dem auch sei, fand ich einen nützlichen Link hier: http://www.javavids.com/video/how-to-read-data-from-blob-using-jpa-hibernate.html

Und die Änderung I gemacht zu meinem Code:

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

war ich dann in der Lage auf meinem char []

Hoffnung zu nennen .length dies jemand anderem hilfreich ...

Verwandte Themen