2015-08-26 3 views
0

После удаления 1 значения из уникального поля (Mysql) мне нужно переименовать остальных значения снова в одной транзакции: код:Исключения с помощью рамки Play JPA обновления уникального поля ограничения

JPA.withTransaction(new Callback0() { 
      @Override 
      public void invoke() throws Throwable { 
       obj.removeDevice(deviceID); 
      // if I put removeDevice in different transaction it works ! 
      // but can cause integrity problem i case of failure  
       obj.changeTemporalDevices(...); 
       obj.reCalcDevicesNames(...); 

       obj.saveDevices(....); 

      } 
     }); 

Это кажется, что JPA «не видит», что значение было удален в одной транзакции и я получил ниже исключение:

[ERROR] org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Duplicate entry 'aaa2r28c011' for key 'name_device_UNIQUE' 
[ERROR] application - javax.persistence.RollbackException: Error while committing the transaction 
java.lang.RuntimeException: javax.persistence.RollbackException: Error while committing the transaction 
     at play.db.jpa.JPA.withTransaction(JPA.java:111) ~[play-java-jpa_2.10-2.3.8.jar:2.3.8] 

ответ

0

Вы должны вымывать сеанс сразу после удаления, с тем чтобы не допустить спящий режим выбирает SQL заявление еха .

+0

Спасибо! JPA.em() заподлицо(). решить проблему –

+0

Затем вы можете отметить ответ как правильный. Спасибо. – Franck

Смежные вопросы