[Seasar-user:19560] Re: 【S2Dao】SELECT結果がEntityに入らないケースがある

Hiroyuki Oonaka [E-MAIL ADDRESS DELETED]
2010年 3月 26日 (金) 17:03:52 JST


大中(せと)です。

On Fri, 26 Mar 2010 14:29:17 +0900
"Hidemasa Aoki" <[E-MAIL ADDRESS DELETED]> wrote:

> 問題を簡潔に述べると、SELECTでは正しく取得できているのに、EntityのhomeKaddr1
> などに値がセットされない、ということです。
> しかも、CardEntryDaoでは問題ないのに、CardEntryPreprintDaoでは現象が発生しま
> す。
> いったい何が違うのか、さっぱりわかりません。
> SELECTの結果とEntityのプロパティのマッピングに、何か注意すべき点があるので
> しょうか?
> (たとえば、項目名に_1などがあると、気分次第で正しく動かないこともある、と
> か。)

結論から申し上げますと、Daoの@S2Daoアノテーションと違う
クラス(DTO)を返しているメソッドでは、このような現象が起こります。

これは、アノテーションで指定されているクラスでは、

テーブルのカラム名(HOME_KADDR_1)→プロパティ名(homeKaddr1)
という変換を行うのに対し、

アノテーションで指定されていないクラス(DTO)では、
プロパティ名(おそらくhomeKaddr1)→カラム名(HOME_KADDR1)
                                           ^^^^^^^^^^^
という変換を行うためです。

おそらく問題が起きていないCardEntryDaoでは、@S2Daoアノテーションで
CardEntryListDtoクラスが指定されているのでないでしょうか。

> 現在は暫定対応(確実に動くDaoのほうで再取得)して逃げているので問題ないので
> すが、やはりあるべき姿で実装したいです。

_の後に数字がつくプロパティに@Columnアノテーションを指定して、
そこで、テーブルのカラム名をしてください。

-- 
大中浩行(せとあずさ)
[E-MAIL ADDRESS DELETED]
http://d.hatena.ne.jp/setoazusa/



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