-
Type:
Bug
-
Resolution: Won't Fix
-
Priority:
Major
-
None
-
Affects Version/s: 1.0.34
-
Component/s: s2dao
-
None
-
Environment:WebSphere 5.1.2
Oracle 8.1.7
S2 2.3.8
S2DAO 1.0.34
SQLを外部ファイルに記述し、テーブルを2つ参照してSQLコメントを使用すると
片方のテーブルが無視されてしまいます。
ログを見る限りでは、SQLは問題なく吐き出されています。
テーブルの構造がシンプルなものは
SQLコメントを使用しても問題なく結果を取得できるのですが、
問題のSQLを実行すると期待通りの結果が取得できません。
SQLコメントなしで直で条件を指定すると問題ありません。
SQLコメントの変数が予約語かと思って「abcd」と別のものにしましたが変わりませんでした。
データベースに直接SQLを流すと期待通りの結果が返ってきます。
どのようにすれば、問題なく結果が取得できるのでしょうか?
DAO,DTOの記述の仕方が間違っているような気もするので、
もし間違っていればご指摘お願いします。
よろしくお願いします。
以下コードです。
– 環境 –
WebSphere 5.1.2
Oracle 8.1.7
S2 2.3.8
S2DAO 1.0.34
~~問題がないとき~~
– テーブル ------------------
社員テーブル 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
リストで取得したときのサイズは0
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
リストで取得したときのサイズは0
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
リストで取得したときのサイズは30で、b.hol_kbnがnull
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で指定されているもの