the exception 'com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry ' looks not be catched and not be auto rollback.
when I got the final printStack, but the "Insert into TA" is commit to database. It should be rollback.
the "manually handle exception" is not be catched.
[SQL Execution] insert into Role (name, memo, domain_id, created_time, updated_time) values ('test_zhai12', 'xe6xb5x8bxe8xafx95xe7xbfx9f', 1, null, null); (2 ms) /// this insert is commited to database.I thought it shoule be rollback.
[SQL Execution] select distinct
permission.id as i_on_permission from Permission permission inner join Role_Permission role_permission on
permission.id = role_permission.permission_id where role_permission.role_id = 94; (3 ms)
[SQL Execution] delete from Permission where FALSE; (1 ms)
[SQL Execution] insert into Permission (permission_meta_id, resource_id) values (118, null); (3 ms) // be commited
[SQL Execution] insert into Role_Permission (permission_id, role_id) values (305, 94); (2 ms) // be commited
[SQL Execution Failed] insert into Permission (permission_meta_id, resource_id) values (115, 67) (Reason: Duplicate entry '115-67' for key 'permission_permission_meta_resource_uniq')
[Rizhiyi]: error Stack Trace from frontend
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '115-67' for key 'permission_permission_meta_resource_uniq'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
at com.mysql.jdbc.Util.getInstance(Util.java:387)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:932)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2551)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861)
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073)
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2009)
at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5094)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1994)
at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98)
at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98)
at scalikejdbc.StatementExecutor$$anonfun$executeUpdate$1.apply$mcI$sp(StatementExecutor.scala:329)
at scalikejdbc.StatementExecutor$$anonfun$executeUpdate$1.apply(StatementExecutor.scala:329)
at scalikejdbc.StatementExecutor$$anonfun$executeUpdate$1.apply(StatementExecutor.scala:329)
at scalikejdbc.StatementExecutor$NakedExecutor.apply(StatementExecutor.scala:18)
at scalikejdbc.StatementExecutor$$anon$1.scalikejdbc$StatementExecutor$LoggingSQLAndTiming$$super$apply(StatementExecutor.scala:309)
at scalikejdbc.StatementExecutor$LoggingSQLAndTiming$class.apply(StatementExecutor.scala:253)
at scalikejdbc.StatementExecutor$$anon$1.scalikejdbc$StatementExecutor$LoggingSQLIfFailed$$super$apply(StatementExecutor.scala:309)
at scalikejdbc.StatementExecutor$LoggingSQLIfFailed$class.apply(StatementExecutor.scala:286)
at scalikejdbc.StatementExecutor$$anon$1.apply(StatementExecutor.scala:309)
at scalikejdbc.StatementExecutor.executeUpdate(StatementExecutor.scala:329)
at scalikejdbc.DBSession$$anonfun$updateWithFilters$1.apply(DBSession.scala:432)
at scalikejdbc.DBSession$$anonfun$updateWithFilters$1.apply(DBSession.scala:430)
at scalikejdbc.LoanPattern$class.using(LoanPattern.scala:18)
at scalikejdbc.ActiveSession.scalikejdbc$DBSession$$super$using(DBSession.scala:586)
at scalikejdbc.DBSession$class.using(DBSession.scala:30)
at scalikejdbc.ActiveSession.using(DBSession.scala:586)
at scalikejdbc.DBSession$class.updateWithFilters(DBSession.scala:429)
at scalikejdbc.ActiveSession.updateWithFilters(DBSession.scala:586)
at scalikejdbc.DBSession$class.updateAndReturnSpecifiedGeneratedKey(DBSession.scala:516)
at scalikejdbc.ActiveSession.updateAndReturnSpecifiedGeneratedKey(DBSession.scala:586)
at scalikejdbc.SQLUpdateWithGeneratedKey$$anonfun$9.apply(SQL.scala:549)
at scalikejdbc.SQLUpdateWithGeneratedKey$$anonfun$9.apply(SQL.scala:549)
at scalikejdbc.SQLUpdateWithGeneratedKey.apply(SQL.scala:556)
at cn.yottabyte.mysql.Permission$.create(Permission.scala:108)
at cn.yottabyte.mysql.Role$.assignPermission(Role.scala:71)
at cn.yottabyte.privilege.permit.RoleBuilder$$anonfun$commitPermissions$2.apply(RoleBuilder.scala:193)
at cn.yottabyte.privilege.permit.RoleBuilder$$anonfun$commitPermissions$2.apply(RoleBuilder.scala:191)
at scala.collection.immutable.List.foreach(List.scala:318)
at cn.yottabyte.privilege.permit.RoleBuilder.commitPermissions(RoleBuilder.scala:191)
at cn.yottabyte.privilege.permit.RoleBuilder.commit(RoleBuilder.scala:170)
at cn.yottabyte.db_handlers.PrivilegeHandler.doCreateRole(PrivilegeHandler.scala:83)
at cn.yottabyte.db_handlers.PrivilegeHandler$$anonfun$2.apply(PrivilegeHandler.scala:36)
at cn.yottabyte.db_handlers.PrivilegeHandler$$anonfun$2.apply(PrivilegeHandler.scala:36)
at cn.yottabyte.Handler.handleRequest(Handler.scala:47)
at cn.yottabyte.FrontendService$$anonfun$cn$yottabyte$FrontendService$$handleHttpRequest$2$$anonfun$1.apply(FrontendService.scala:49)
at cn.yottabyte.FrontendService$$anonfun$cn$yottabyte$FrontendService$$handleHttpRequest$2$$anonfun$1.apply(FrontendService.scala:45)
at scalikejdbc.DBConnection$$anonfun$3.apply(DBConnection.scala:305)
at scalikejdbc.DBConnection$class.scalikejdbc$DBConnection$$rollbackIfThrowable(DBConnection.scala:274)
at scalikejdbc.DBConnection$class.localTx(DBConnection.scala:303)
at scalikejdbc.DB.localTx(DB.scala:60)
at scalikejdbc.DB$.localTx(DB.scala:257)
at cn.yottabyte.FrontendService$$anonfun$cn$yottabyte$FrontendService$$handleHttpRequest$2.apply$mcV$sp(FrontendService.scala:45)
at cn.yottabyte.FrontendService$$anonfun$cn$yottabyte$FrontendService$$handleHttpRequest$2.apply(FrontendService.scala:38)
at cn.yottabyte.FrontendService$$anonfun$cn$yottabyte$FrontendService$$handleHttpRequest$2.apply(FrontendService.scala:38)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)