[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 メーリングリストの案内