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