[Seasar-user:1820] Re: S2Hibernate で QBE ( Query by Example )

佐藤 亘 sato_wao
2005年 4月 15日 (金) 09:57:32 JST


お世話様です。佐藤です。
empnoにいくつか値を設定して実行してみたところ
テーブル内のdeptonoが「0」であるデータがList(複数のEmployee)で返ってきているようです。
下記のクエリーの(this.DEPTNO=?)の所に「0」を指定した結果みたいです。
Employeeのdeptonoがint型であることを考えると、
employee.setEmpno(new Integer(empno));
のところで何も設定されず、しかし、employee.setDeptnoが呼ばれたという感じです。
また、EMPNO(4桁)とDEPTNO(2桁)なので、DEPTNOに4桁設定=>失敗で「0」が設定 
もあるのでは?と思い、2桁を設定して実行してみましたが、結果は同じでした。

次に、
employee.setDeptno(empno);
とメソッドを変更してしてやってみたところ、
select this.EMPNO as EMPNO0_, this.ENAME as ENAME0_, this.JOB as JOB0_, this.MGR as MGR0_, this.HIREDATE as HIREDATE0_, this.SAL as SAL0_, this.COMM as COMM0_, this.DEPTNO as DEPTNO0_ from EMP this where (this.DEPTNO=?)

と、同じクエリーが出力され、DEPTNOが指定された値(これとしては期待通り)のEmployeeが取得できました。
マッピングが上手くいっていないように見るといった感じです。
長くなりましたが、宜しくお願いします。
 
 佐藤 亘 <[E-MAIL ADDRESS DELETED]> wrote:
お世話様です。佐藤です。 
なかなか手が付けられなく、すみません。 
なるべく早くお知らせしますので、しばしお待ちください。 
 
 "Okazaki, Kenichi" <[E-MAIL ADDRESS DELETED]> wrote: おかざきです。
 
設定等には、問題ないと思います。
 
ログに出てくるSQLには、設定した値は出てきません。
しかし、実際には、"(this.DEPTNO=?)"の"?"の部分設定した値が差し込まれた状態でSQLが実行されるので、
resultには、検索された結果が返ってきていると思います。
 
値が返ってきているか、確認していただけますか?
 

-----Original Message-----
From: [E-MAIL ADDRESS DELETED] [mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of 佐藤 亘
Sent: Wednesday, April 13, 2005 1:49 PM
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:1797] S2Hibernate で QBE ( Query by Example )



さとうと申します。

↓のように、 S2Hibernateのサンプルを利用してQBE(Query by Example)をやってみました。

Employee employee = new Employee();
   employee.setEmpno(new Integer(empno));
   Example example = Example.create(employee);

   S2Session session = sessionFactory_.getSession();
   Criteria criteria = session.createCriteria(Employee.class);
   criteria.add(example);
   List result = criteria.list();

   if (result.size() > 0) {
    return (Employee) result.get(0);
   } else {
    return null;
   }

empnoに設定してつもりが(setEmpno()、コンソールのログを見てみると、

Hibernate: select this.EMPNO as EMPNO0_, this.ENAME as ENAME0_, this.JOB as JOB0_, this.MGR as MGR0_, this.HIREDATE as HIREDATE0_, this.SAL as SAL0_, this.COMM as COMM0_, this.DEPTNO as DEPTNO0_ from EMP this where (this.DEPTNO=?)

と、(this.DEPTNO=?)の指定されてました。これは設定方法とかが悪かったのでしょうか?

よろしくお願いします。

 

 
_______________________________________________
Seasar-user mailing list
[E-MAIL ADDRESS DELETED]
http://lists.sourceforge.jp/mailman/listinfo/seasar-user_______________________________________________
Seasar-user mailing list
[E-MAIL ADDRESS DELETED]
http://lists.sourceforge.jp/mailman/listinfo/seasar-user
-------------- next part --------------
HTMLの添付ファイルが除去されました.
URL: http://lists.sourceforge.jp/mailman/archives/seasar-user/attachments/20050415/379a964c/attachment.htm



Seasar-user メーリングリストの案内