S2daoのSqlファイルでのDBアクセスについて
お世話になります。現在Teeda+S2DAOの学習をしています。
そこでどうしても一点解決できない問題がありご質問させて
いただきたく思い投稿いたします。
問題:
DBアクセスの際に作成したSQLファイルの呼び出しを行いDBにアクセスしようとするとエラーが出力される。デフォルトのSQLファイルを利用しないDBアクセスは可能。
開発環境:
アプリケーションサーバー:Tomcat5.5
IDE:eclipse3.2
DB:postgresql8.2
言語:java1.6
FW:Turaプロジェクト(Teeda+S2DAO)
出力されたエラーは以下の通りです。
org.seasar.framework.exception.SQLRuntimeException: [ESSR0072]SQLで例外(SQL=[update userinfo set userid = ?, password = ?], Message=[[ESSR0072]SQLで例外(SQL=[update userinfo set userid = ?, password = ?], Message=[0], ErrorCode=07006, SQLState={3})が発生しました : [SQLで例外(Message=[Can't infer the SQL type to use for an instance of agnietec.entity.UserInfo. Use setObject() with an explicit Types value to specify the type to use.], ErrorCode=0, SQLState=07006)が発生しました。], [Can't infer the SQL type to use for an instance of agnietec.entity.UserInfo. Use setObject() with an explicit Types value to specify the type to use.], ErrorCode=0, SQLState=07006)が発生しました
at org.seasar.extension.jdbc.impl.BasicHandler.bindArgs(BasicHandler.java:195)
at org.seasar.extension.jdbc.impl.BasicUpdateHandler.execute(BasicUpdateHandler.java:101)
at org.seasar.extension.jdbc.impl.BasicUpdateHandler.execute(BasicUpdateHandler.java:80)
at org.seasar.dao.impl.UpdateDynamicCommand.execute(UpdateDynamicCommand.java:43)
at org.seasar.dao.interceptors.S2DaoInterceptor.invoke(S2DaoInterceptor.java:53)
at org.seasar.dao.pager.PagerS2DaoInterceptorWrapper.invoke(PagerS2DaoInterceptorWrapper.java:71)
at agnietec.dao.UserInfoDao$$EnhancedByS2AOP$$134ea95$$MethodInvocation$$updateUser8.proceed(MethodInvocationClassGenerator.java)
at org.seasar.framework.aop.interceptors.TraceInterceptor.invoke(TraceInterceptor.java:73)
at agnietec.dao.UserInfoDao$$EnhancedByS2AOP$$134ea95$$MethodInvocation$$updateUser8.proceed(MethodInvocationClassGenerator.java)
at agnietec.dao.UserInfoDao$$EnhancedByS2AOP$$134ea95.updateUser(UserInfoDao$$EnhancedByS2AOP$$134ea95.java)
確信はないんですがエンコードでエラーが出ているのかと思い、
確認したのですが
postgreはEUC_JP、
eclipseはUTF-8でした。
自分でも色々試行錯誤し、web.xmlのエンコード指定をEUC_JPなどにしてみましたが、状況に変化はありません。
<filter>
<filter-name>encodingfilter</filter-name> <filter-class>org.seasar.extension.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value> ここをEUC-JPにしました </param-value>
</init-param>
<filter>
インターネットで調べても、調べ方が悪いのか同じような問題がみつからずほとほと困っています。どなたかご教授いただけないでしょうか?
何卒よろしくお願いいたします。
お礼
返信送れて申し訳ございません。 回答ありがとうございます! texjoyさんの言うとおりの方法で実装できました。 以下のサイトが参考になりました。 http://www.seasar.org/wiki/index.php?FAQ%2FS2DAO#q70fa8ce https://ml.seasar.org/archives/seasar-user/2007-April/009006.html