[DAO-4] [Seasar-user:3720]外部SQLで2テーブル以上の参照でSQLコメントを使用すると値が取得できない Created: 2006-05-31 Updated: 2007-08-01 Resolved: 2007-08-01 |
|
Status: | Closed |
Project: | S2Dao |
Component/s: | s2dao |
Affects Version/s: | 1.0.34 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | manhole | Assignee: | Unassigned |
Resolution: | Won't Fix | Votes: | 0 |
Labels: | None | ||
Environment: |
WebSphere 5.1.2 |
Description |
SQLを外部ファイルに記述し、テーブルを2つ参照してSQLコメントを使用すると ログを見る限りでは、SQLは問題なく吐き出されています。 テーブルの構造がシンプルなものは SQLコメントの変数が予約語かと思って「abcd」と別のものにしましたが変わりませんでした。 どのようにすれば、問題なく結果が取得できるのでしょうか? DAO,DTOの記述の仕方が間違っているような気もするので、 よろしくお願いします。 以下コードです。 – 環境 – ~~問題がないとき~~ – テーブル ------------------ 社員テーブル emp PK 社員コード emp_no 社員名 emp_name 地区コード chiku_code 地区テーブル chiku PK 地区コード chiku_code 地区名 chiku_name DAO EmpDao.java EmpDao.java public static final Class BEAN = EmpDto.class; public static final String getEmp_ARGS = "chikuCode"; List getEmp(String chikuCode); SQL EmpDao_getEmp.sql EmpDao_getEmp.sql select a.emp_no, b.chiku_code, b.chiku_name from emp a, chiku b where a.chiku_code = b.chiku_code and b.chiku_code = /*chikuCode*/'A' DTO EmpDto.java EmpDto.java SQL手動発行のためTABLEアノテーションなし selectで指定されているもの ~~問題があるとき~~ テーブル 就業明細 meisai PK 年 year PK 月 month PK 日 day PK 社員コード emp_no 社員名 emp_name カレンダー cal PK 地区コード chiku_code PK 年 year PK 月 month PK 日 day 休日区分 hol_kbn DAO MeisaiDao.java MeisaiDao.java public static final Class BEAN = MeisaiDto.class; public static final String getMeisai_ARGS = "chikuCode"; List getMeisai(String chikuCode); 以下のSQLで /*chikuCode*/ を'A'と直で指定すると問題なし SQL1 MeisaiDao_getMeisai.sql MeisaiDao_getMeisai.sql select a.*, b.hol_kbn from meisai a, cal b where a.year = b.year and a.month = b.month and a.day = b.day and a.emp_no = '0001' and a.year = 2006 and a.month = 4 and b.chiku_code = /*chikuCode*/'A' SQL2 MeisaiDao_getMeisai.sql MeisaiDao_getMeisai.sql select a.*, b.hol_kbn from meiai a left outer join cal b on a.year = b.year and a.month = b.month and a.day = b.day where a.emp_no = '0001' and a.year = 2006 and a.month = 4 and b.chiku_code = /*chikuCode*/'A' SQL3 MeisaiDao_getMeisai.sql MeisaiDao_getMeisai.sql select a.emp_no, b.hol_kbn from meisai a left outer join (select year, month, day, hol_kbn from cal where chiku_code = /*chikuCode*/'A') b on a.year = b.year and a.month = b.month and a.day = b.day where a.emp_no= '0001' and a.year = 2006 and a.month = 4 DTO MeisaiDto.java MeisaiDto.java SQL手動発行のためTABLEアノテーションなし selectで指定されているもの |
Comments |
Comment by taedium [ 2007-08-01 ] |
S2Daoの問題ではないのでクローズします。 |
Comment by taedium [ 2007-07-31 ] |
chiku_codeを長さが2以上のCHAR型にしたら再現しました。 |
Comment by taedium [ 2007-07-29 ] |
SQLコメントを使ったパラメータのバインドが正常に機能しないという解釈で試したのですが、再現できませんでした。 |