23:56:54)追加された行はこの色です。削除された行はこの色です。[#y3fc4970]S2Daoは以下のDBに対応しています。JOIN構文をサポートしているDBでしたら動作すると思います。DaoにはBEANアノテーションを、JavaBeans(Entity)にはTABLEアノテーションを書きましょう。DaoにはS2DaoInterceptorを適用する必要があります。AbstractなDaoを使うことも可能ですが、何らかのDaoインタフェースをimplementsしている必要があります。dao.diconなど同梱のdiconがupdateされている可能性があります。リリースノートを確認しましょう。19:48:55)~~''Question''~''Question''~S2Daoの開発の中で、updateBatchを投げる際、更新したくない列を指定~したいのですが、方法がわかりません。~~''Answer''~''Answer''~NO_PERSISTENT_PROPSアノテーションを使用すると更新対象に含まれなくなります。~~http://www.seasar.org/s2dao.html#NoPersistentPropsAnnotation~を参照されると良いと思います。19:46:22)~~''Question''~''Question''~S2DAOでconnectionPoolを利用しているのですが、コネクションのプーリングが~行なわれていないような動作をしているので、設定に漏れがあるのではないかと~思い、何かアドバイスを頂ければとメールさせて頂きました。~~実行ログを見ると、最初に1件のみ~[物理的なコネクションを取得しました]を表示して、以降はDBにアクセスする~と[論理的なコネクションを取得しました]と出力され、1つ物理コネクションを~使い回しているようなログが出力されています。~~この時に、Oracleのv$sessionを見ると論理的なコネクションの数だけセッショ~ンが張られています。~~しばらくDBへのアクセスを行なわずにいるとログには[論理的なコネクション~を取得しました]の表示がOracleに張られていたセッションの数だけ表示されま~す。constructorにありますね。diconファイルから構築しているので、結局のとこ~ろVM空間上に複数のコンポーネントセットが存在することになります。~~ということは、DataSourceもConnectionPoolも複数あるので、ログにあるよう~な動きになります。~~S2の挙動というよりかは、DIの適用パターンにあわせて設計・動きを少し変更~されたほうがよろしいかと思います。constructorを削除する。スと実装クラスに分離したほうが良いです。19:42:46)~~''Question''~''Question''~~S2DAO、S2JDBC等でSQLを発行する際にコンパイル済みのSQLを発行するのか、~毎SQLを生成して発行するのか、どちらなのでしょう?サンプルのログをみてい~ると毎回生成しているように思えるのですが。~~''Answer''~''Answer''~~PreparedStatementに格納してあるプリコンパイルされたSQLを発行しています。~~ログではき出されているSQLは、Statementに渡される(発行する)SQLを~そのまま表示している訳ではなく、ログにはき出すためにS2が、パラメータが~埋め込まれたSQLをせっせと作っています。~~org.seasar.extension.jdbc.impl.BasicHandlerクラスの~getCompleteSqlメソッドが参考になると思います。19:40:26)~~''Question''~''Question''~~S2DaoでJDK1.4.2_08だと動くコードがJDK1.4.2_10にして~Daoのメソッドを呼ぶとClassCastExceptionでこけてしまうコードがあります。~~DaoのメソッドはBigDecimalを返すメソッドで引数4つを取ります。test.TestDatDao$$EnhancedByS2AOP$$18622f3.sumTest(TestDatDao$$EnhancedByS2AOP$$18622f3.java)~となっております。~SQLを組み立てる時にこけている様な感じです。~DAOのバージョンはs2-dao-1.0.28.jarでPostgreSQL8.0.3を使っております。1.4.2_10にはJISAutoDetectのバグがあります。~http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=25802&forum=12~~FIXされるまで1.4.2_10より前のバージョンを使われることをオススメします。19:33:05)~~''Question''~~S2Daoのプライマリーキーの処理について伺います。~~S2Daoを使ってDB2へのアクセスを勉強しております。~テーブルにプライマリーキーが設定していないと、S2Daoが~「・・にプライマリーキーが見付りません」の例外を投げてきます。~当然テーブルに直接プライマリーキーが設定していれば問題が~ありませんが、既存のテーブルに明示的に主キーではなく、~Index(索引)の形で主キーを指定されていることです。~~この場合はS2Daoをどのようにすれば~「・・にプライマリーキーが見付りません」の例外を回避できるのでしょうか。~~''Answer''~UPDATEやDELETEなどの自動生成を行わなければ、プライマリキー~がなくても問題ありません。~したがって、UPDATEやDELETEをsqlファイルやsqlコメントで行えば~例外を回避できると思います。19:33:05)''Question''S2Daoのプライマリーキーの処理について伺います。S2Daoを使ってDB2へのアクセスを勉強しております。テーブルにプライマリーキーが設定していないと、S2Daoが「・・にプライマリーキーが見付りません」の例外を投げてきます。テーブルに直接プライマリーキーが設定していれば問題がありませんが、既存のテーブルに明示的に主キーではなく、Index(索引)の形で主キーを指定されていることです。この場合はS2Daoをどのようにすれば「・・にプライマリーキーが見付りません」の例外を回避できるのでしょうか。''Answer''UPDATEやDELETEなどの自動生成を行わなければ、プライマリキーがなくても問題ありません。これは、UPDATEやDELETE文のWHERE句にPKを含むよう自動生成するためです。したがって、UPDATEやDELETEをsqlファイルやsqlコメントで行えば例外を回避できると思います。DAOがUPDATEやDELETEメソッドを持たない場合は、何か対応する必要はありません。テーブルにはPKを付けることを推奨します。19:30:14)~~''Question''~''Question''~j2ee.diconでの設定を利用すれば自動的に1個のコネクションを得られます。~複数DBとのコネクションを取得するにはどうすればよいのでしょうか。19:26:23)~~''Question''~''Question''~複雑なSQLを処理する場合の実装方法について教え頂けませんでしょうか?~~''Answer''~''Answer''~引数の値をSQL文に文字列として直接埋め込む。[[ドキュメント:http://s2dao.seasar.org/ja/s2dao.html]]の~「埋め込み変数コメント」を参照。ように「?」を含む演算子があります。'hoge';~~この演算子を使用したSQLを発行しようとすると、「?」がバインド変数とみなされ~て、~java.sql.SQLExceptionが発生してしまいます。'hoge';~となっています。~~org.seasar.framework.util.PreparedStatementUtilで~java.sql.PreparedStatementを使用している以上、~s2daoでPostgresSQLの幾何データ演算子を使用することはできないのでしょうか?~~ちなみに、単独でjava.sql.Statementを使用して同じSQLを発行すると、~正常に問い合わせが行われました。~~何かよい方法があれば、教えてください。~よろしくお願い致します。OPERATOR文を使用して、新しく作成したOPERATORの中でpath_interを~呼び出すことで、無事解決することができました。/*dto.aaa*/('aaa')というふうにコメントより後ろの括弧が必要。APIから知る方法が無いため、無理。java.sql.Statement#executeBatch()を使用しているのであれば、戻り値のint[]に各コマンドの実行結果が反映されているはずですよね?現実的には、1つのコマンドでも失敗すれば、全てのコマンドが失敗したような状態になってしまった記憶があります。JDBCドライバー次第ってことですね。http://ml.seasar.org/archives/seasar-user/2006-August/006205.html''Question''SQLのパラメータ?の部分に、以下のような文字列が入ってしまいます。http://ml.seasar.org/archives/seasar-user/2006-August/006139.html排他制御には、TimestampよりもVersionNoの方が良い。レコード更新時の時間を持ちたいのならば、トリガーを使うのが良いのでは。