[Seasar-user:4027] S2Daoで任意のテーブルに切替えたい
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2006年 7月 6日 (木) 15:51:08 JST
関です
題名の通り、S2Daoを使ってテーブルを切替える方法は有りますか?
S2Daoを使用してみようと思ったシステムは、
テーブル定義は同じですが、新しいテーブルが毎日作成されます。
例:
XXX20060701
XXX20060702
XXX20060703
XXX20060704
この状況でDAOのBEANにテーブル名を記述するには、毎日新しいクラスを作成する事になるのでは?
と言うことで質問させて頂きました。
試したことは以下の通りです。
1.文字列で渡す
☆DAOの定義
public List selectAll(String tableName);
public static final String selectAll_SQL = "SELECT * FROM /*tableName*/XXX20060101";
☆実行部分
List xxx = dao.selectAll("XXX20060702");
☆結果
SQLが
SELECT * FROM 'XXX20060701'
となり(テーブル名にシングルクォートが入って)エラー
2.文字列で渡す(実行部分の引数を変えてみた)
☆DAOの定義
public List selectAll(String tableName);
public static final String selectAll_SQL = "SELECT * FROM /*tableName*/XXX20060101";
☆実行部分
List xxx = dao.selectAll("\"XXX20060702\"");
☆結果
SQLが
SELECT * FROM '"XXX20060702"'
となりエラー
Caused by: java.sql.SQLException: ORA-00903: 表名が無効です。
3.数字で渡す
☆DAOの定義
public List selectAll(int tableValue);
public static final String selectAll_SQL = "SELECT * FROM XXX/*tableValue*/20060101";
☆実行部分
List xxx = dao.selectAll(20060702);
☆結果
以下の様なエラー出力とともにエラー
org.seasar.framework.exception.SQLRuntimeException: [ESSR0071]SQLで例外(ErrorCode=933, SQLState=42000)が発生しました。理由はorg.seasar.framework.exception.SSQLException: [ESSR0072]SQLで例外(SQL=[SELECT * FROM XXX?], ErrorCode=933, SQLState=42000)が発生しました
... 中略
Caused by: org.seasar.framework.exception.SSQLException: [ESSR0072]SQLで例外(SQL=[SELECT * FROM XXX?], ErrorCode=933, SQLState=42000)が発生しました
... 中略
Caused by: java.sql.SQLException: ORA-00933: SQLコマンドが正しく終了されていません。
4.意味はないけどSQLコメントの中身を消してみた
☆DAOの定義
public List selectAll(int tableValue);
public static final String selectAll_SQL = "SELECT * FROM XXX/**/20060701";
☆実行部分
List xxx = dao.selectAll(20060702);
☆結果
正常 = XXX20060701 のデータの取得可能
(引数とかは無視されるのかな??)
S2Daoでテーブルの切替
http://www.seasar.org/wiki/index.php?AnsweringYourQuestions#n4635c3d
と言うのも発見したのですが、既知の既存テーブルを切替える方法でした。
未来に作成されるテーブルに切替える方法がありましたらお聞かせ下さい。
よろしくお願い致します。
Seasar-user メーリングリストの案内