[Seasar-user:15074] [S2JDBC]whereにおけるEnumの使用について
cynipe
[E-MAIL ADDRESS DELETED]
2008年 7月 17日 (木) 16:41:27 JST
cynipeです。
表題の件について質問があります。まず、
Hoge hoge = manager.from(Hoge.class)
.where("enumColumn = ?", HogeEnum.HOGE)
.getSingleResult();
上記の様にコーディングしたところ期待値が返って来ず、下記に変えたら期待値
が帰ってきました。
Hoge hoge = manager.from(Hoge.class)
.where("enumColumn = ?", HogeEnum.HOGE.name())
.getSingleResult();
少し追ってみた所AbstractQuery#prepareInParams(PrepareStatement)で
param.valueType.bindValue(ps, i + 1, param.value);
としているところのvalueTypeがSerializableTypeになっていたのが原因のよう
でした。
そこで質問なんですが、whereにおいてenumを使う場合はname()メソッドを使い
Stringに変えてからでないといけないということでしょうか?
使用したバージョンはs2-tiger-2.4.27-20080715.103711-3.jarとその依存ライ
ブラリになります。
以上、よろしくお願い致します。
Seasar-user メーリングリストの案内