Quantcast
Channel: Active questions tagged atlassian-plugin-sdk - Stack Overflow
Viewing all articles
Browse latest Browse all 282

Jira server Plugin - Atlassian PocketKnife - QueryDSL - batch insert with executewithKeys() not working for ORACLE and SQL Server

$
0
0

I am trying to batch insert some records using the batch-Insert functionality provided by QueryDSL. The same piece of code works when I use just execute() but then have to separately write a select query to get the last inserted records.

databaseAccessor.runInNewTransaction(databaseConnection -> {
            SQLInsertClause batchInsert = databaseConnection.insert(TEST);
            for (int i = 0; i < 5; i++) {
                batchInsert.set(TEST.NAME, "label" + i).set(TEST.PROJECT_ID, 1).addBatch();
            }
            return batchInsert.executeWithKeys(TEST.ID);
        }, OnRollback.NOOP);

This piece of code works for MySQL and PostgreSQL but fails for ORACLE and SQL Server, Is there a way I can do this and also get the id of the inserted records.

The exception I get is as follows:

com.querydsl.core.QueryException: Caught SQLServerException for insert into "dbo"."AO_13764_TEST" ("NAME", "PROJECT_ID") values (?, ?)
    at com.querydsl.sql.DefaultSQLExceptionTranslator.translate(DefaultSQLExceptionTranslator.java:50)
    at com.querydsl.sql.Configuration.translate(Configuration.java:459)
    at com.querydsl.sql.dml.SQLInsertClause.executeWithKeys(SQLInsertClause.java:408)
    at com.qmetry.module.configuration.priority.dao.PriorityDAOImpl.lambda$5(PriorityDAOImpl.java:157)
    at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.lambda$execute$0(DatabaseAccessorImpl.java:69)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneTransactionalExecutor.executeInternal(StandaloneTransactionalExecutor.java:79)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneTransactionalExecutor.lambda$execute$0(StandaloneTransactionalExecutor.java:35)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneTransactionalExecutorFactory$StandaloneHostConnectionAccessor.execute(StandaloneTransactionalExecutorFactory.java:56)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneTransactionalExecutor.execute(StandaloneTransactionalExecutor.java:35)
    at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.execute(DatabaseAccessorImpl.java:67)
    at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.runInNewTransaction(DatabaseAccessorImpl.java:38)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneDatabaseAccessor.delegateCall(StandaloneDatabaseAccessor.java:246)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneDatabaseAccessor.lambda$runInNewTransaction$1(StandaloneDatabaseAccessor.java:211)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneDatabaseAccessor.doWithConnection(StandaloneDatabaseAccessor.java:267)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneDatabaseAccessor.runInNewTransaction(StandaloneDatabaseAccessor.java:211)
    at com.qmetry.module.configuration.priority.dao.PriorityDAOImpl.testBatchInsert(PriorityDAOImpl.java:152)
    at com.qmetry.module.configuration.priority.dao.PriorityDAOTest.testDefaultPriorityBatchnsert(PriorityDAOTest.java:86)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: ****The statement must be executed before any results can be obtained.****
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:234)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.getGeneratedKeys(SQLServerStatement.java:2207)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.vibur.dbcp.proxy.AbstractInvocationHandler.targetInvoke(AbstractInvocationHandler.java:109)
    at org.vibur.dbcp.proxy.StatementInvocationHandler.newProxiedResultSet(StatementInvocationHandler.java:134)
    at org.vibur.dbcp.proxy.StatementInvocationHandler.doInvoke(StatementInvocationHandler.java:80)
    at org.vibur.dbcp.proxy.StatementInvocationHandler.doInvoke(StatementInvocationHandler.java:40)
    at org.vibur.dbcp.proxy.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:80)
    at com.sun.proxy.$Proxy14.getGeneratedKeys(Unknown Source)
    at com.querydsl.sql.dml.SQLInsertClause.executeWithKeys(SQLInsertClause.java:391)
    at com.qmetry.module.configuration.priority.dao.PriorityDAOImpl.lambda$5(PriorityDAOImpl.java:157)
    at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.lambda$execute$0(DatabaseAccessorImpl.java:69)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneTransactionalExecutor.executeInternal(StandaloneTransactionalExecutor.java:79)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneTransactionalExecutor.lambda$execute$0(StandaloneTransactionalExecutor.java:35)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneTransactionalExecutorFactory$StandaloneHostConnectionAccessor.execute(StandaloneTransactionalExecutorFactory.java:56)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneTransactionalExecutor.execute(StandaloneTransactionalExecutor.java:35)
    at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.execute(DatabaseAccessorImpl.java:67)
    at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.runInNewTransaction(DatabaseAccessorImpl.java:38)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneDatabaseAccessor.delegateCall(StandaloneDatabaseAccessor.java:246)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneDatabaseAccessor.lambda$runInNewTransaction$1(StandaloneDatabaseAccessor.java:211)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneDatabaseAccessor.doWithConnection(StandaloneDatabaseAccessor.java:267)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneAoDatabaseAccessor$MockitoMock$201014501.doWithConnection$accessor$hn7RGFKL(Unknown Source)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneAoDatabaseAccessor$MockitoMock$201014501$auxiliary$mSxKFWDA.call(Unknown Source)
    at org.mockito.internal.invocation.RealMethod$FromCallable$1.call(RealMethod.java:40)
    at org.mockito.internal.invocation.RealMethod$FromBehavior.invoke(RealMethod.java:62)
    at org.mockito.internal.invocation.InterceptedInvocation.callRealMethod(InterceptedInvocation.java:152)
    at org.mockito.internal.stubbing.answers.CallsRealMethods.answer(CallsRealMethods.java:43)
    at org.mockito.Answers.answer(Answers.java:100)
    at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:103)
    at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29)
    at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:35)
    at org.mockito.internal.creation.bytebuddy.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:61)
    at org.mockito.internal.creation.bytebuddy.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:49)
    at org.mockito.internal.creation.bytebuddy.MockMethodInterceptor$DispatcherDefaultingToRealMethod.interceptSuperCallable(MockMethodInterceptor.java:108)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneAoDatabaseAccessor$MockitoMock$201014501.doWithConnection(Unknown Source)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneDatabaseAccessor.runInNewTransaction(StandaloneDatabaseAccessor.java:211)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneAoDatabaseAccessor$MockitoMock$201014501.runInNewTransaction$accessor$hn7RGFKL(Unknown Source)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneAoDatabaseAccessor$MockitoMock$201014501$auxiliary$YiJXxMpN.call(Unknown Source)
    at org.mockito.internal.invocation.RealMethod$FromCallable$1.call(RealMethod.java:40)
    at org.mockito.internal.invocation.RealMethod$FromBehavior.invoke(RealMethod.java:62)
    at org.mockito.internal.invocation.InterceptedInvocation.callRealMethod(InterceptedInvocation.java:152)
    at org.mockito.internal.stubbing.answers.CallsRealMethods.answer(CallsRealMethods.java:43)
    at org.mockito.Answers.answer(Answers.java:100)
    at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:103)
    at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29)
    at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:35)
    at org.mockito.internal.creation.bytebuddy.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:61)
    at org.mockito.internal.creation.bytebuddy.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:49)
    at org.mockito.internal.creation.bytebuddy.MockMethodInterceptor$DispatcherDefaultingToRealMethod.interceptSuperCallable(MockMethodInterceptor.java:108)
    at com.atlassian.pocketknife.test.util.querydsl.StandaloneAoDatabaseAccessor$MockitoMock$201014501.runInNewTransaction(Unknown Source)
    ... 27 more

Viewing all articles
Browse latest Browse all 282

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>