繁体   English   中英

使用Play框架JPA更新唯一约束字段的异常

[英]Exception using Play framework JPA updating unique constraint field

从唯一字段(Mysql)删除1个值后,我需要在一个事务中再次重命名其余值:代码:

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]

您应该在删除后立即刷新会话,以免休眠方式选择SQL语句的执行顺序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM