HibernateException: proxy poignée n'est plus valide après la base de données erreur de violation d'

J'ai de la boucle pour enregistrer quelques objets. Dans la boucle d'un appel de la méthode du service et de capturer des exceptions. Service enregistrer méthode annotée @Transactionnelle et à l'intérieur ne hibernate saveOrUpdate appel.
Le Service est fourni par la méthode getBean de ApplicationContext objet. J'appelle ça une seule fois avant la boucle.

Dans la boucle, après j'attrape exception de l'oracle de violation de contrainte :

org.mise en veille prolongée.exception à la règle.constraintviolationexception: ora-00001: contrainte unique (ccb.sys_c0017085) a violé

J'journal problème et d'essayer de sauver un autre objet. L'exception suivante je reçois est:

org.mise en veille prolongée.HibernateException: proxy poignée n'est plus valide

Parfois, il se produit seulement une fois après chaque erreur ora, mais parfois, il se répète pour les objets (itérations).

Comment gérer cette exception & comment sauver opération possible?

Je suis en utilisant
Printemps 3.1.3 et Hibernate 4.1.7.

[modifier]
Quelques exemple de code:

@Service
public class ServiceForRecord {
    @Transactional
public Record saveRecord(Record record, String user) {
      Record obj = record;
      //some validation & seting internal values
      getHibernateTemplate().saveOrUpdate(obj)
      return obj;
    }
...

et dans ma boucle je fais:

//in params:
serviceClass = ServiceForRecord.class;
entityClass = Record.class;
saveMethod = "saveRecord";
//loop prepare
service = getApplicationContext().getBean(serviceClass);
serviceSave = serviceClass.getMethod("saveRecord", Record.class, String.class);
while (condition) {
entity =  BeanUtils.instantiate(entityClass);
//setup entity
serviceSave.invoke(service, entity, "testUser");
//catch error
} //end while

[modifier]
La trace de pile:

PreparedStatementProxyHandler(AbstractProxyHandler).errorIfInvalid() line: 63   
PreparedStatementProxyHandler(AbstractStatementProxyHandler).continueInvocation(Object, Method, Object[]) line: 100 
PreparedStatementProxyHandler(AbstractProxyHandler).invoke(Object, Method, Object[]) line: 81   
$Proxy100.clearBatch() line: not available  
NonBatchingBatch(AbstractBatchImpl).releaseStatements() line: 163   
NonBatchingBatch(AbstractBatchImpl).execute() line: 152 
JdbcCoordinatorImpl.getBatch(BatchKey) line: 151    
SingleTableEntityPersister(AbstractEntityPersister).insert(Serializable, Object[], boolean[], int, String, Object, SessionImplementor) line: 2940   
SingleTableEntityPersister(AbstractEntityPersister).insert(Serializable, Object[], Object, SessionImplementor) line: 3403   
EntityInsertAction.execute() line: 88   
ActionQueue.execute(Executable) line: 362   
ActionQueue.executeActions(List) line: 354  
ActionQueue.executeActions() line: 275  
DefaultFlushEventListener(AbstractFlushingEventListener).performExecutions(EventSource) line: 326   
DefaultFlushEventListener.onFlush(FlushEvent) line: 52  
SessionImpl.flush() line: 1210  
SessionImpl.managedFlush() line: 399    
JdbcTransaction.beforeTransactionCommit() line: 101 
JdbcTransaction(AbstractTransactionImpl).commit() line: 175 
HibernateTransactionManager.doCommit(DefaultTransactionStatus) line: 480    
HibernateTransactionManager(AbstractPlatformTransactionManager).processCommit(DefaultTransactionStatus) line: 754   
HibernateTransactionManager(AbstractPlatformTransactionManager).commit(TransactionStatus) line: 723 
TransactionInterceptor(TransactionAspectSupport).commitTransactionAfterReturning(TransactionAspectSupport$TransactionInfo) line: 392    
TransactionInterceptor.invoke(MethodInvocation) line: 120   
ReflectiveMethodInvocation.proceed() line: 172  
AfterReturningAdviceInterceptor.invoke(MethodInvocation) line: 50   
ReflectiveMethodInvocation.proceed() line: 172  
JdkDynamicAopProxy.invoke(Object, Method, Object[]) line: 202   
$Proxy71.save(Account, String) line: not available  
GeneratedMethodAccessor115.invoke(Object, Object[]) line: not available 
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: not available   
Method.invoke(Object, Object...) line: not available    
ImportServiceProvider.save(Object, String) line: 380

[modifier]
la dernière chose que j'ai remarqué, c'est qu'il ne se produit pas sur MS SQL Server, uniquement sur Oracle

Pouvez-vous publier stacktrace ? Et pourquoi êtes-vous à l'aide de la réflexion ? Vous pouvez simplement appeler service.saveRecord(entity,"testUser")
Je prépare solution générique pour enregistrer les enregistrements de donnée de fichier. service de la classe et de la classe d'entité est donnée par param. Je vais re-générer l'erreur et la poster.

OriginalL'auteur Saram | 2013-01-31