■
[S2Dao]副問い合わせ
副問い合わせの結果からレコードを削除するSQLがエラーとなる
DELETE FROM テーブル WHERE ID IN (SELECT ID FROM テーブル WHERE 条件)
SQLは実行されているので結果としては問題ないが、例外が飛んでくるのが非常に困る。
org.seasar.framework.exception.SQLRuntimeException: [ESSR0071]SQLで例外が発生しました。理由はjava.sql.SQLException: 定義がありません。 at org.seasar.extension.jdbc.impl.BasicSelectHandler.execute(BasicSelectHandler.java:124) at org.seasar.dao.impl.SelectDynamicCommand.execute(SelectDynamicCommand.java:40) at org.seasar.dao.interceptors.S2DaoInterceptor.invoke(S2DaoInterceptor.java:36) at org.seasar.framework.aop.impl.NestedMethodInvocation.proceed(NestedMethodInvocation.java:41) at org.seasar.framework.aop.interceptors.TraceInterceptor.invoke(TraceInterceptor.java:50) at org.seasar.framework.aop.impl.NestedMethodInvocation.proceed(NestedMethodInvocation.java:41) at org.seasar.framework.aop.interceptors.InterceptorChain.invoke(InterceptorChain.java:41) at jnes.dao.CheckResultDtoDao$$EnhancedByS2AOP$$e4bb3c$$MethodInvocation$$eraseSandwichedUnplannedCheckResult4.proceed(MethodInvocationClassGenerator.java) at jnes.dao.CheckResultDtoDao$$EnhancedByS2AOP$$e4bb3c.eraseSandwichedUnplannedCheckResult(CheckResultDtoDao$$EnhancedByS2AOP$$e4bb3c.java) at jnes.dao.CheckResultDtoDaoTest.testDeleteSandwichedUnplannedCheckResult(CheckResultDtoDaoTest.java:46) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at junit.framework.TestCase.runTest(TestCase.java:154) at org.seasar.framework.unit.S2FrameworkTestCase.runTestTx(S2FrameworkTestCase.java:396) at org.seasar.framework.unit.S2FrameworkTestCase.runBare(S2FrameworkTestCase.java:184) 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.RemoteTestRunner.runTests(RemoteTestRunner.java:478) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) Caused by: java.sql.SQLException: 定義がありません。 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208) at oracle.jdbc.driver.OracleStatement.prepareAccessors(OracleStatement.java:814) at oracle.jdbc.driver.OracleStatement.check_row_prefetch_changed(OracleStatement.java:2726) at oracle.jdbc.driver.OracleResultSetImpl.close_or_fetch_from_next(OracleResultSetImpl.java:249) at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:213) at org.seasar.extension.jdbc.impl.ResultSetWrapper.next(ResultSetWrapper.java:207) at org.seasar.extension.jdbc.impl.ObjectResultSetHandler.handle(ObjectResultSetHandler.java:32) at org.seasar.extension.jdbc.impl.BasicSelectHandler.execute(BasicSelectHandler.java:165) at org.seasar.extension.jdbc.impl.BasicSelectHandler.execute(BasicSelectHandler.java:137) at org.seasar.extension.jdbc.impl.BasicSelectHandler.execute(BasicSelectHandler.java:122) ... 23 more
backport175.Required
チェックボックス等で配列のプロパティを使用している場合に、Requiredを指定してもValidationの対象にならない。当然クライアントサイドJavaScriptが生成されない…これは仕様?またプリミティブ型の配列の場合、ClassCastExceptionが出る…
java.lang.ClassCastException at org.apache.commons.validator.Field.getIndexedProperty(Field.java:736) at org.apache.commons.validator.Field.validate(Field.java:830) at org.apache.commons.validator.Form.validate(Form.java:290) at org.apache.commons.validator.Validator.validate(Validator.java:353) at org.apache.struts.validator.ValidatorForm.validate(ValidatorForm.java:110) at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:927) at org.seasar.struts.processor.S2RequestProcessor.processValidate(S2RequestProcessor.java:115) at org.seasar.struts.processor.ValidateProcessorImpl.processValidate(ValidateProcessorImpl.java:64) at org.seasar.struts.processor.S2RequestProcessor.processS2Validate(S2RequestProcessor.java:108) at org.seasar.struts.processor.AcceptorImpl.process(AcceptorImpl.java:89) at org.seasar.struts.processor.S2RequestProcessor.process(S2RequestProcessor.java:59) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
V1.2動作確認
●Actionがnullを返した場合にExceptionが発生する問題を修正しました
●ファイルアップロード時、pageタグが動作しない問題を修正しました
○struts-configのinputを指定しなくて、かつ pageタグも利用しない場合に
Validationを行うとStackOverflowErrorが発生する問題を修正しました
○Validatorアノテーションを配列、ネストしたオブジェクトに対応しました
●RegistActionClassPlugInをRegisterActionClassPlugInに変更しました
※●:確認済み、○未確認(必要になったら…)
→これで再来週のプロトリリースに間に合う。