[Seasar-user:5022] Re: [s2dao] 1.0.37 の新機能についてエラーが発生
森脇
[E-MAIL ADDRESS DELETED]
2006年 11月 9日 (木) 16:09:03 JST
太一様
回答ありがとうございます。
>(2)の対応を含め、近日中に、1.0.38をリリース致します。
お手数ですが、よろしくお願いいたします。
>太一です。
>
>ご迷惑をおかけしております。大変、申し訳ありません。
>
>(1)生成されたSQLの構文が不正な為SQLが発行できない。
>については、リリース済みのリソースの内容を確認してみた所、
>僕がリリース作業を失敗して、S2Dao1.0.x系Trunkよりも、若干古いリソースで、
>リリース作業をしてしまった為、発生していると思われます。
>ユニットテストが失敗するのも、厳密に確認した訳ではありませんが、原因は一緒だと思います。
>
>
>(2)VersionNoがカウントアップされない。
>については、現在調査中です。
>
>(2)の対応を含め、近日中に、1.0.38をリリース致します。
>
>
>以上、よろしくお願いします。
>
>06/11/09 に 森脇<kuno53196224 @ yahoo.co.jp> さんは書きました:
>> 森脇と申します。お世話になります。
>>
>> 先日リリースされたs2dao-1.0.37で追加された機能を試そうとしたところ
>> 下記のようなエラーが発生しました。
>>
>> 1.メソッド名の末尾に「UnlessNull」が付いているUPDATEメソッドで作成されたSQLについて
>> (1)生成されたSQLの構文が不正な為SQLが発行できない。
>> (2)VersionNoがカウントアップされない。
>>
>> 2.UpdateAutoDynamicCommandのテストクラスである
>> UpdateAutoDynamicCommandTestのテストが成功しない。
>>
>>
>> まず「1-(1)」についてですが、以下のような例外が発生しました。
>>
>> ----- ここから
>> ERROR 2006-11-09 13:09:15,390 [main] [ESSR0017]例外が発生しました。理由はjava.sql.SQLException:
>> Connection is closed
>> org.seasar.framework.exception.SXAException:
>> [ESSR0017]例外が発生しました。理由はjava.sql.SQLException: Connection is closed
>> at org.seasar.extension.dbcp.impl.DBXAResourceImpl.doRollback(DBXAResourceImpl.java:75)
>> at org.seasar.extension.jta.xa.AbstractXAResource.rollback(AbstractXAResource.java:193)
>> at
org.seasar.extension.dbcp.impl.XAResourceWrapperImpl.rollback(XAResourceWrapperImpl.java:137)
>> at org.seasar.extension.jta.XAResourceWrapper.rollback(XAResourceWrapper.java:76)
>> at org.seasar.extension.jta.TransactionImpl.rollbackResources(TransactionImpl.java:346)
>> at org.seasar.extension.jta.TransactionImpl.rollback(TransactionImpl.java:320)
>> at
org.seasar.extension.jta.TransactionManagerImpl.rollback(TransactionManagerImpl.java:100)
>> at org.seasar.extension.unit.S2TestCase.doRunTest(S2TestCase.java:92)
>> 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 junit.framework.TestSuite.runTest(TestSuite.java:208)
>> at junit.framework.TestSuite.run(TestSuite.java:203)
>> 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 = ?,ename = ?,tstamp = ? WHERE empno = ? AND tstamp = ?], ErrorCode={1}, SQLState={2})
>> が発生しました
>> at
org.seasar.extension.dbcp.impl.ConnectionWrapperImpl.wrapException(ConnectionWrapperImpl.java:524)
>> at
>>
org.seasar.extension.dbcp.impl.ConnectionWrapperImpl.prepareStatement(ConnectionWrapperImpl.java:144)
>> at org.seasar.extension.jdbc.util.ConnectionUtil.prepareStatement(ConnectionUtil.java:50)
>> ... 26 more
>> Caused by: java.sql.SQLException: Column not found: , in statement [UPDATE EMP SET ,deptno =
?,ename =
>> ?,tstamp = ? WHERE empno = ? AND tstamp = ?]
>> at org.hsqldb.jdbc.jdbcUtil.throwError(Unknown Source)
>> at org.hsqldb.jdbc.jdbcPreparedStatement.<init>(Unknown Source)
>> at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Unknown Source)
>> at
>>
org.seasar.extension.dbcp.impl.ConnectionWrapperImpl.prepareStatement(ConnectionWrapperImpl.java:141)
>> ... 27 more
>> ----- ここまで
>>
>> 生成されたSQLを見るたところ、UPDATE文のカラム名の前に
>> カンマがあり不正なSQL文になっていました。
>> UPDATE文を生成しているUpdateAutoDynamicCommand#setupSql
>> 71行目のカンマを付加する判定が、
>> プロパティ全体数のカウントで見ているため発生したと思われます。
>>
>>
>> 「1-(2)」についてはテストを実施したところ以下の用なSQL文が発行されました。
>>
>> ----- ここから
>> UPDATE chiki_m SET ,chiki_nm = '東京',version_no = 0
>> WHERE chiki_cd = '01' AND version_no = 0
>> ----- ここまで
>>
>> UpdateAutoDynamicCommand#setupSqlで更新番号のカウントアップを
>> おこなっていないためと思われます。
>> また、テストは行っておらず憶測になりますがソースを見るかぎり
>> Timestampについても同じ現象が発生すると思います。
>>
>>
>> 次に2.についてですが、現在公開されている「s2-dao-1.0.37.zip」を
>> ダウンロードしMaven2にて「mvn package」コマンドを実行したところ
>> BUILD FAILUREになりました。
>>
>> 次にEclipseにプロジェクトをインポート後、テストパッケージ(s2-dao/src/test/java)を指定し、
>> 全てのテストを実行したところテストは何故か成功してしまいした。
>> しかし、UpdateAutoDynamicCommandTestのみをテストするとエラーが発生します。
>> これについてはよく分かりませんでした。すいません。
>>
>>
>>
>> --------------------------------------
>> Protect Your PC Now ! -- 0 Yen Security Campaign
>> http://pr.mail.yahoo.co.jp/security/
>>
>> _______________________________________________
>> Seasar-user mailing list
>> Seasar-user @ ml.seasar.org
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
--------------------------------------
Protect Your PC Now ! -- 0 Yen Security Campaign
http://pr.mail.yahoo.co.jp/security/
Seasar-user メーリングリストの案内