Org.hibernate.exception.GenericJDBCException: could not insert/select ids for bulk update

Fala galera,

Configurações do Sistema: Velocity + Webwork + Hibernate 3 + Postgres 8.2 (Linux Suse 10)

Eu to com este problema do título ao tentar executar a HQL abaixo:

...
// s eh do tipo org.hibernate.Session.class
s.createQuery("Update Exame set resumoClinico = :resumo " +
		  "Where codigo in (Select codigo From Exame Where numero like :numero And instituicao.codigo = :instCod)")
			.setString("resumo", this.getResumoClinico())
			.setString("numero", this.getNumero().substring(0, this.getNumero().length()-1) + "%")
			.setLong("instCod", this.instituicao.getCodigo())
			.executeUpdate();
...

A hierarquia das classes é:

public class Exame {...}

public class ExameHisto extends Exame {...}

public class ExameCito extends Exame {...}

Quando é executada a HQL de Update acima, ele dá o seguinte erro: (vou postar as sql geradas pelo hibernate tb)

// Linha antes de gerar o erro
Hibernate: insert into HT_Exame select exame0_.codigo as codigo from Exame exame0_ where codigo in (select exame1_.codigo from Exame exame1_ where (exame1_.numero like ?) and exame1_.instituicao_codigo=?)

// Stack trace do erro
org.hibernate.exception.GenericJDBCException: could not insert/select ids for bulk update
	at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.hql.ast.exec.MultiTableUpdateExecutor.execute(MultiTableUpdateExecutor.java:127)
	at org.hibernate.hql.ast.QueryTranslatorImpl.executeUpdate(QueryTranslatorImpl.java:391)
	at org.hibernate.engine.query.HQLQueryPlan.performExecuteUpdate(HQLQueryPlan.java:259)
	at org.hibernate.impl.SessionImpl.executeUpdate(SessionImpl.java:1129)
	at org.hibernate.impl.QueryImpl.executeUpdate(QueryImpl.java:94)
	at br.gov.inca.anatomia.exame.Exame.atualizaResumoClinicoRelacionados(Exame.java:551)
	at br.gov.inca.anatomia.acoes.exames.histopatologia.InserirHistoAcao.executarPosInsExame(InserirHistoAcao.java:333)
	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 br.gov.inca.anatomia.dao.hibernate.HibernateDAO.callInvokers(HibernateDAO.java:1046)
	at br.gov.inca.anatomia.dao.hibernate.HibernateDAO.persist(HibernateDAO.java:119)
	at br.gov.inca.anatomia.acoes.exames.histopatologia.InserirHistoAcao.execute(InserirHistoAcao.java:280)
	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.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:365)
	at com.opensymphony.xwork.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:217)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:191)
	at br.gov.inca.anatomia.interceptadores.AuditoriaExameInterceptor.intercept(AuditoriaExameInterceptor.java:183)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at br.gov.inca.anatomia.interceptadores.IncrementaNumExameInterceptor.intercept(IncrementaNumExameInterceptor.java:77)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at br.gov.inca.anatomia.interceptadores.AuthorizeInterceptor.intercept(AuthorizeInterceptor.java:118)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:137)
	at com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:81)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:115)
	at com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:81)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.webwork.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:136)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:151)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:100)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:113)
	at com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:202)
	at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:111)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1608)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1343)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:195)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:351)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:305)
	at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
	at org.hibernate.hql.ast.exec.MultiTableUpdateExecutor.execute(MultiTableUpdateExecutor.java:118)
	... 72 more

Eu já consegui contornar esse erro fazendo um SQL JDBC direto usando o connection() do Session, mas isso p/ mim é gambiarra. E os posts que eu encontrei sobre este erro não foram satisfatórios.

Desde já agradeço pela atenção.