[DAO-39] UnlessNullで更新したときにPK以外が全てnullだとSQLRuntimeExceptionが発生する。 Created: 2006-11-02 Updated: 2006-11-02 Resolved: 2006-11-02 |
|
Status: | Resolved |
Project: | S2Dao |
Component/s: | s2dao |
Affects Version/s: | None |
Fix Version/s: | 1.0.38 |
Type: | Bug | Priority: | Minor |
Reporter: | azusa | Assignee: | taichi |
Resolution: | Fixed | Votes: | 0 |
Labels: | None |
Description |
そんな使い方する方が悪いのかもしれませんが。 以下、スタックトレースです。 org.seasar.framework.exception.SQLRuntimeException: [ESSR0071]SQLで例外(ErrorCode=-28, SQLState=S0022)が発生しました。理由はorg.seasar.framework.exception.SSQLException: [ESSR0072]SQLで例外(SQL=[UPDATE EMP SET ,deptno = ? WHERE empno = ?], ErrorCode= {1}, SQLState={2})が発生しましたat org.seasar.extension.jdbc.util.ConnectionUtil.prepareStatement(ConnectionUtil.java:52) at org.seasar.extension.jdbc.impl.BasicStatementFactory.createPreparedStatement(BasicStatementFactory.java:34) at org.seasar.extension.jdbc.impl.BasicHandler.prepareStatement(BasicHandler.java:95) at org.seasar.extension.jdbc.impl.BasicUpdateHandler.execute(BasicUpdateHandler.java:73) at org.seasar.extension.jdbc.impl.BasicUpdateHandler.execute(BasicUpdateHandler.java:66) at org.seasar.dao.impl.UpdateDynamicCommand.execute(UpdateDynamicCommand.java:40) at org.seasar.dao.impl.UpdateAutoDynamicCommandTest.testExecute2Tx(UpdateAutoDynamicCommandTest.java:68) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at junit.framework.TestCase.runTest(TestCase.java:154) at org.seasar.framework.unit.S2FrameworkTestCase.doRunTest(S2FrameworkTestCase.java:233) at org.seasar.extension.unit.S2TestCase.doRunTest(S2TestCase.java:89) at org.seasar.framework.unit.S2FrameworkTestCase.runBare(S2FrameworkTestCase.java:150) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) Caused by: org.seasar.framework.exception.SSQLException: [ESSR0072]SQLで例外(SQL=[UPDATE EMP SET ,deptno = ? WHERE empno = ?], ErrorCode={1} , SQLState= {2})が発生しました |
Comments |
Comment by taichi [ 2006-11-02 ] |
修正をコミットしました。 |
Comment by azusa [ 2006-11-02 ] |
deptNoをIntegerにしてやってみました。 at org.seasar.extension.jdbc.util.ConnectionUtil.prepareStatement(ConnectionUtil.java:52) at org.seasar.extension.jdbc.impl.BasicStatementFactory.createPreparedStatement(BasicStatementFactory.java:34) at org.seasar.extension.jdbc.impl.BasicHandler.prepareStatement(BasicHandler.java:95) at org.seasar.extension.jdbc.impl.BasicUpdateHandler.execute(BasicUpdateHandler.java:73) at org.seasar.extension.jdbc.impl.BasicUpdateHandler.execute(BasicUpdateHandler.java:66) at org.seasar.dao.impl.UpdateDynamicCommand.execute(UpdateDynamicCommand.java:40) at org.seasar.dao.impl.UpdateAutoDynamicCommandTest.testExecute2Tx(UpdateAutoDynamicCommandTest.java:68) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at junit.framework.TestCase.runTest(TestCase.java:154) at org.seasar.framework.unit.S2FrameworkTestCase.doRunTest(S2FrameworkTestCase.java:233) at org.seasar.extension.unit.S2TestCase.doRunTest(S2TestCase.java:89) at org.seasar.framework.unit.S2FrameworkTestCase.runBare(S2FrameworkTestCase.java:150) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) Caused by: org.seasar.framework.exception.SSQLException: [ESSR0072]SQLで例外(SQL=[UPDATE EMP SET WHERE empno = ?], ErrorCode={1} , SQLState= {2})が発生しました |
Comment by taichi [ 2006-11-02 ] |
このテストケースだと、deptnoがintである為、実際には全てnullになっていません。実質的にバグってますので、修正します。 |
Comment by azusa [ 2006-11-02 ] |
再現テストケースです。(1.0.xのbranchで作成してます) Index: C:/Tomcat/webapps/s2dao-1.0.x/s2-dao/src/test/java/org/seasar/dao/impl/UpdateAutoDynamicCommandTest.java + public void testExecute2Tx() throws Exception { ); ); + + + public long getEmpno() { + return this.empno; + } + + public void setEmpno(long empno) {+ this.empno = empno;+ } + + + + + + + + + + + + + + + + + + + +} |