Problemas com Blob e PostgreSQL

0 respostas
V

Galera,

To tendo problemas para trabalhar com o tipo java.sql.Blob no PostgreSQL.

Alguém aí já viu o seguinte erro:

org.postgresql.util.PSQLException: Um erro de E/S ocorreu ao enviar para o processo do servidor.

at org.postgresql.core.v3.QueryExecutorImpl.fastpathCall(QueryExecutorImpl.java:487)

at org.postgresql.fastpath.Fastpath.fastpath(Fastpath.java:75)

at org.postgresql.fastpath.Fastpath.fastpath(Fastpath.java:115)

at org.postgresql.fastpath.Fastpath.getInteger(Fastpath.java:127)

at org.postgresql.largeobject.LargeObject.tell(LargeObject.java:264)

at org.postgresql.largeobject.LargeObject.size(LargeObject.java:279)

at org.postgresql.jdbc2.AbstractJdbc2BlobClob.length(AbstractJdbc2BlobClob.java:44)

at org.hibernate.lob.SerializableBlob.length(SerializableBlob.java:31)

at br.com.dataeasy.docflow.web.ctr.bean.TipoDocumentoBean.consultar(TipoDocumentoBean.java:175)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at com.sun.el.parser.AstValue.invoke(Unknown Source)

at com.sun.el.MethodExpressionImpl.invoke(Unknown Source)

at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)

at com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:69)

at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:61)

Caused by: java.io.IOException: Stream closed

at sun.nio.cs.StreamEncoder.ensureOpen(Unknown Source)

at sun.nio.cs.StreamEncoder.flush(Unknown Source)

at java.io.OutputStreamWriter.flush(Unknown Source)

at org.postgresql.core.PGStream.flush(PGStream.java:531)

at org.postgresql.core.v3.QueryExecutorImpl.sendFastpathCall(QueryExecutorImpl.java:537)

at org.postgresql.core.v3.QueryExecutorImpl.fastpathCall(QueryExecutorImpl.java:481)

Isso acontece quando eu invoco qualquer método do objeto Blob.

Minha classe tá mapeada assim:

private Blob arquivo;

@Lob
@Basic(fetch=FetchType.EAGER)
@Column(name="arquivo")
public Blob getArquivo() {
	return arquivo;
}

public void setArquivo(Blob arquivo) {
	this.arquivo = arquivo;
}

Daí o erro acontece no meu bean:

Blob blob = objArquivo.getArquivo();
byte[] bytes = blob.getBytes();

Quando eu invoco blob.getBytes(); ou qualquer outro método associoado a esse tipo de objeto.

Falou.

Criado 4 de setembro de 2007
Respostas 0
Participantes 1