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.