Charly,
Obrigado pelo retorno. Vou dar uma analisada melhor no hibernate, talvez
tenhamos que fazer algumas modificações nele.
Não temos como remove-lo pois é o utilizamos a muito tempo, e agora quando
fomos atualizar a versão de outro banco notamos o mesmo problema com campos
binários.
Mas voltando ao Postgres notei que na própria API de conexão não me deixa
enviar meu dados se tiver com o AutoComit:
na classe *org.postgresql.largeobject.LargeObjectManager*
*public *LargeObject open(long oid, int mode) *throws *SQLException
{
*if* (conn.getAutoCommit())
*throw new* PSQLException(GT.tr("Large Objects may not be used
in auto-commit mode."),
PSQLState.*NO_ACTIVE_SQL_TRANSACTION*);
*return new *LargeObject(fp, oid, mode);
}
então não seria só problema do hibernate, mas sim do driver de conexão
também? Alguém tem idéia o porque disso?
On Thu, Jul 23, 2009 at 4:14 PM, Charly Frankl <[email protected]> wrote:
> Daniel,
>
> Campos binários em geral são um problema dentro do hibernate (vou ser
> sincero, não gosto muito de ORM's ... rsss).... Segue um exemplo simples
> utilizando JDBC direto, que acho bem mais simples...
>
> File file = new File("myimage.gif");
> FileInputStream fis = new FileInputStream(file);
> PreparedStatement ps = conn.prepareStatement("INSERT INTO images VALUES (?,
> ?)");
> ps.setString(1, file.getName());
> ps.setBinaryStream(2, fis, (int)file.length());
> ps.executeUpdate();
> ps.close();
> fis.close();
>
> Para maiores detalhes, dá uma olhada em
> http://jdbc.postgresql.org/documentation/80/binary-data.html
>
> Att,
>
>
> --
> Charly Frankl
> http://javadevilopers.blogspot.com/
> [email protected]
> Linux user #391083
>
>
>
> 2009/7/23 Daniel Henrique Joppi <[email protected]>
>
>> adicionei a propriedade <property name="defaultAutoCommit" value="false"
>> /> como sugerido em outros tópicos na internet ...
>>
>> alguém conhece uma outra maneira?
>>
>> On Wed, Jul 22, 2009 at 9:46 AM, Daniel Henrique Joppi <
>> [email protected]> wrote:
>>
>>> Bom dia,
>>>
>>> Estou com problemas ao tentar inserir um array de bytes em um campo do
>>> tipo oid.
>>>
>>> org.springframework.jdbc.UncategorizedSQLException: Hibernate operation:
>>> could not insert: [com.norxs.mama.MyMessage]; uncategorized SQLException for
>>> SQL [insert into public.MyMessage (isProtocol, domain, sourceID, service,
>>> flow, priority, status, createdOn, message, props, uniqueid, messageType,
>>> nrDoc, fromPartner, toPartner, messageSize, billingTo, processedOn, billing,
>>> groupType, messageIdKey) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
>>> ?, ?, ?, ?, ?, ?, ?)]; SQL state [25P01]; error code [0]; Objetos Grandes
>>> não podem ser usados no modo de efetivação automática (auto-commit).; nested
>>> exception is org.postgresql.util.PSQLException: Objetos Grandes não podem
>>> ser usados no modo de efetivação automática (auto-commit).
>>> at
>>> org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.translate(SQLStateSQLExceptionTranslator.java:121)
>>> at
>>> org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:322)
>>> at
>>> org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
>>> at
>>> org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:410)
>>> at
>>> org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:378)
>>> at
>>> org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:639)
>>> at
>>> com.norxs.mama.DBPersistence.messageArrived(DBPersistence.java:411)
>>> at
>>> com.norxs.mama.jbi.ReceiverLegacyMonoComponent.poll(ReceiverLegacyMonoComponent.java:98)
>>> at
>>> org.apache.servicemix.components.util.PollingComponentSupport.run(PollingComponentSupport.java:65)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>> at java.lang.Thread.run(Thread.java:619)
>>> Caused by: org.postgresql.util.PSQLException: Objetos Grandes não podem
>>> ser usados no modo de efetivação automática (auto-commit).
>>> at
>>> org.postgresql.largeobject.LargeObjectManager.createLO(LargeObjectManager.java:241)
>>> at
>>> org.postgresql.largeobject.LargeObjectManager.createLO(LargeObjectManager.java:228)
>>> at
>>> org.postgresql.jdbc2.AbstractJdbc2Statement.setBlob(AbstractJdbc2Statement.java:2851)
>>> at
>>> org.apache.commons.dbcp.DelegatingPreparedStatement.setBlob(DelegatingPreparedStatement.java:181)
>>> at org.hibernate.type.BlobType.set(BlobType.java:49)
>>> at org.hibernate.type.BlobType.nullSafeSet(BlobType.java:117)
>>> at
>>> org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2002)
>>> at
>>> org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2248)
>>> at
>>> org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2665)
>>> at
>>> org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:60)
>>> at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
>>> at
>>> org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
>>> at
>>> org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
>>> at
>>> org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
>>> at
>>> org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
>>> at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
>>> at
>>> org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:390)
>>> at
>>> org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:374)
>>> ... 7 more
>>>
>>> --
>>> [ ]'s
>>> Daniel Henrique Joppi
>>>
>>> msn: [email protected]
>>> gtalk: [email protected]
>>> skype: daniel.joppi
>>>
>>
>>
>>
>> --
>> [ ]'s
>> Daniel Henrique Joppi
>>
>> msn: [email protected]
>> gtalk: [email protected]
>> skype: daniel.joppi
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
>
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
--
[ ]'s
Daniel Henrique Joppi
msn: [email protected]
gtalk: [email protected]
skype: daniel.joppi
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral