原題:テーブル名を修正して@Table(name = "bar")の部分を書き換えてもupdate文のfrom句が書き換わらない
ぎゃー!トリガーにベタに書いてたテーブル名が古いままだったのが原因でした。
SQL Server Management Studioで実行したらトリガーの問題っていうのがコンソールに返ってきて、はじめて原因がわかった。死にたい。
結果としてのエラーコードはここで修正されているのと同じ。
https://www.seasar.org/issues/browse/DAO-46
http://d.hatena.ne.jp/arn/20061119#p2
seasar-userのMLは明日投げてみよう。
環境
jtds | 1.2.2 |
s-2framework | 2.4.30 |
s2-extension | 2.4.30 |
s2-tiger | 2.4.30 |
cubby | 1.1.1 |
S2JDBCを利用
EclipseはPleiadesのEuropa 3.3.2.20080303版を使用して、WTP上からTomcat6で動かしている。
Tomcatのautomatic publishingを無効にするために、http://d.hatena.ne.jp/uriyuri/20080328/1206694040の通りに、標準出力フォルダを
{PROJECT}/src/main/webapp/WEB-INF/classes
に変更して、serverの自動公開のチェックを外した。
事象
stacktrace
javax.servlet.ServletException: org.seasar.framework.exception.SQLRuntimeException: [ESSR0072]SQLで例外(SQL=[update sandbox.bar set hoge = ?, UPDATE_USER_ID = ? where ID = ?], Message=[[ESSR0072]SQLで例外(SQL=[update sandbox.bar set hoge = ?, UPDATE_USER_ID = ? where ID = ?], Message=[208], ErrorCode=S0002, SQLState={3})が発生しました : [SQLで例外(Message=[オブジェクト名 'sandbox.foo' は無効です。], ErrorCode=208, SQLState=S0002)が発生しました。], [SQLで例外(Message=[オブジェクト名 'sandbox.foo' は無効です。], ErrorCode=208, SQLState=S0002)が発生しました。], [オブジェクト名 'sandbox.foo' は無効です。], ErrorCode=208, SQLState=S0002)が発生しました org.seasar.cubby.filter.CubbyFilter.doFilter(CubbyFilter.java:105) org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:75) org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79) org.seasar.cubby.filter.RequestRoutingFilter.doFilter(RequestRoutingFilter.java:163) org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:63) org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79) org.seasar.cubby.filter.EncodingFilter.doFilter(EncodingFilter.java:179) org.seasar.framework.exception.SQLRuntimeException: [ESSR0072]SQLで例外(SQL=[update sandbox.bar set hoge = ?, UPDATE_USER_ID = ? where ID = ?], Message=[[ESSR0072]SQLで例外(SQL=[update sandbox.bar set hoge = ?, UPDATE_USER_ID = ? where ID = ?], Message=[208], ErrorCode=S0002, SQLState={3})が発生しました : [SQLで例外(Message=[オブジェクト名 'sandbox.foo' は無効です。], ErrorCode=208, SQLState=S0002)が発生しました。], [SQLで例外(Message=[オブジェクト名 'sandbox.foo' は無効です。], ErrorCode=208, SQLState=S0002)が発生しました。], [オブジェクト名 'sandbox.foo' は無効です。], ErrorCode=208, SQLState=S0002)が発生しました org.seasar.framework.util.PreparedStatementUtil.executeUpdate(PreparedStatementUtil.java:68) org.seasar.extension.jdbc.query.AbstractAutoUpdate.executeInternal(AbstractAutoUpdate.java:123) org.seasar.extension.jdbc.query.AbstractAutoUpdate.execute(AbstractAutoUpdate.java:90) org.seasar.framework.exception.SSQLException: [ESSR0072]SQLで例外(SQL=[update sandbox.bar set hoge = ?, UPDATE_USER_ID = ? where ID = ?], Message=[208], ErrorCode=S0002, SQLState={3})が発生しました org.seasar.extension.jdbc.impl.PreparedStatementWrapper.wrapException(PreparedStatementWrapper.java:72) org.seasar.extension.jdbc.impl.PreparedStatementWrapper.wrapException(PreparedStatementWrapper.java:67) org.seasar.extension.jdbc.impl.PreparedStatementWrapper.executeUpdate(PreparedStatementWrapper.java:91) org.seasar.framework.util.PreparedStatementUtil.executeUpdate(PreparedStatementUtil.java:66) org.seasar.extension.jdbc.query.AbstractAutoUpdate.executeInternal(AbstractAutoUpdate.java:123) org.seasar.extension.jdbc.query.AbstractAutoUpdate.execute(AbstractAutoUpdate.java:90) java.sql.SQLException: オブジェクト名 'sandbox.foo' は無効です。 at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368) at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2816) at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2254) at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:631) at net.sourceforge.jtds.jdbc.JtdsStatement.processResults(JtdsStatement.java:584) at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQL(JtdsStatement.java:546) at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeUpdate(JtdsPreparedStatement.java:505) at org.seasar.extension.jdbc.impl.PreparedStatementWrapper.executeUpdate(PreparedStatementWrapper.java:89) at org.seasar.framework.util.PreparedStatementUtil.executeUpdate(PreparedStatementUtil.java:66) at org.seasar.extension.jdbc.query.AbstractAutoUpdate.executeInternal(AbstractAutoUpdate.java:123) at org.seasar.extension.jdbc.query.AbstractAutoUpdate.execute(AbstractAutoUpdate.java:90)