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

Hidemasa Aoki [E-MAIL ADDRESS DELETED]
2010年 3月 26日 (金) 17:57:27 JST


大中様

お世話になります。ITP青木です。

ありがとうございます!

やっぱり、_1あたりが原因でしたか。なんとなく命名規則的に嫌な予感はしたんで
す。

おっしゃるとおり、

CardEntryDaoでは、
@S2Dao(bean = CardEntry.class)

CardEntryPreprintDaoでは、
@S2Dao(bean = CardEntryPreprint.class)

と指定していました。
そもそも、返すのがCardEntryなのだから、CardEntryDaoに入れるべきだったんです
よね・・・。

@Columnアノテーションは、カラムがほかにもかなりたくさんあるので、今回はやめ
ておきます。
メソッドを定義するDaoを移動しようと思います。

本当にありがとうございました!


-----Original Message-----
From: [E-MAIL ADDRESS DELETED]
[mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of Hiroyuki Oonaka
Sent: Friday, March 26, 2010 5:04 PM
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:19560] Re: 【S2Dao】SELECT結果がEntityに入らないケース
がある

大中(せと)です。

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 mailing list
[E-MAIL ADDRESS DELETED]
https://ml.seasar.org/mailman/listinfo/seasar-user



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