2012-04-13 5 views
0

Ich erhalte die folgende Ausnahme, wenn ich versucht habe, einen Blob aus einer Sybase-DB mit Hibernate JPA zu lesen.Lesen und Schreiben von Blobs durch Zuordnung zu Binärdaten

Entity

@Lob 
@Column(length=100000)  
private byte[] fileContent; 

public byte[] getFileContent() { 
    return fileContent; 
} 

public void setFileContent(byte[] fileContent) { 
    this.fileContent = fileContent; 
} 

ioc.Registry Verfahren com.sybase.jdbc3.jdbc.SybResultSet.getBlob (String) nicht unterstützt und nicht aufgerufen werden soll. ioc.Registry Operationen Trace: ioc.Registry [1] Auslösendes Ereignis 'aktivieren' auf Purchase_Request TapestryModule.RequestExceptionHandler Bearbeitung des Antrags mit abgefangene Ausnahme fehlgeschlagen: Die Methode com.sybase.jdbc3.jdbc.SybResultSet.getBlob (String) ist nicht unterstützt und sollte nicht aufgerufen werden. org.apache.tapestry5.ioc.internal.OperationException: Die Methode com.sybase.jdbc3.jdbc.SybResultSet.getBlob (String) wird nicht unterstützt und sollte nicht aufgerufen werden.

Ich stolperte über den folgenden Hibernate-Thread, der eine Verknüpfung zu einem Beispiel zum Lesen und Schreiben von Blobs bot, indem sie auf Binärdaten abgebildet wurden, die Verbindung jedoch tot ist.

Thema https://forum.hibernate.org/viewtopic.php?f=1&t=936553

Toten Link http://www.hibernate.org/73.html

Ich frage mich, ob jemand ein Beispiel oder einen Artikel zur Verfügung stellen könnte beschreiben, wie dies zu tun?

UPDATE

fand ich die folgende JIRA Problem dieses Problem umreißt https://issues.jboss.org/browse/JBPAPP-2867

Laura behauptet, die „Die Abhilfe für dieses Problem ist benutzerdefinierte Typen, die mit dem Sybase Text und Bildtypen erstellen abzubilden. "

Kennt jemand einen benutzerdefinierten Typ?

+0

möglich Duplikat http://stackoverflow.com/q/9049488/507864 – ManuPK

+0

@ManuPK die in Ihrem Link präsentiert Lösungen scheinen nicht mein Problem zu lösen. –

Antwort

0

Sie können versuchen, java.sql.Blob anstelle von Byte-Array in Ihrem Mapping zu verwenden. Sie können die Funktion Hibernate.createBlob() verwenden, um ein Blob aus Byte-Array, String, Eingabestrom zu konvertieren. Der Vorteil ist das Lazy Loading (nur bis die Hibernate Sitzung geöffnet ist).

Ansonsten..im Speicher kann das Laden eines größeren Objekts viel Platz im Heap belegen.

private void setBlob(Blob blob) 
{ 
    this.image = toByteArray(blob); 
} 

private Blob getBlob() 
{ 
    return Hibernate.createBlob(this.image); 
} 
+0

Hi Ram, ich bin etwas verwirrt, ich habe versucht, Blob als Datentyp, private Blob Inhalt und ich bekomme einen Kompilierungsfehler, "Basic-Attribute können nur von den folgenden Typen sein: Java primitive Typen". Ich bin mir auch nicht sicher, was du mitByteArray machst. Können Sie ein wenig mehr auf Ihr Beispiel eingehen? Vielen Dank. –

Verwandte Themen