[Seasar-user:18823] Re: [DBFlute] DBFlute-0.9.5.5+S2DxoでIllegalArgumentException

kubo [E-MAIL ADDRESS DELETED]
2009年 10月 31日 (土) 22:06:48 JST


久保(jflute)です。

m.mさん、こんばんは

確かにEnumConverterの処理で、
Enum.valueOf()の第二引数に、Enumのname()ではなくtoString()を
設定しているところがあって、そこと相性が悪いようですね。

DBFlute側でtoString()を抑制するオプションを検討しようかと思いますが、
(Dxoを使ったことないのでわからないのですが)アプリケーションで
EnumConverterを拡張することは可能でしょうか?
(source.toString();をsource.name();に)

2009/10/31 gonbe nanashi <[E-MAIL ADDRESS DELETED]>:
> はじめまして。
> m.mと申します。
>
> DBFlute-0.9.5からDBFlute-0.9.5.5へアップグレードしたところ、S2Dxo(S2Tiger2.4.38)を利用したEntity→DTOの変換の際に区分値で利用されているEnum型のプロパティを変換する箇所でIllegalArgumentExceptionが発生します。
> どうもS2Dxo内のEnum処理の際toString()でEnumのname()が返されること前提の処理があるため、DBFlute-0.9.5.5から区分値定義のCDef.java内toString()でcode()を返すようOverrideされるようになったため処理がうまくいっていないようです。
>
> ○ログ(一部抜粋)
> java.lang.IllegalArgumentException: No enum const class
> xx.xx.allcommon.CDef$State.1
>        at java.lang.Enum.valueOf(Enum.java:196)
>        at org.seasar.extension.dxo.converter.impl.EnumConverter.convert(EnumConverter.java:46)
>        at org.seasar.extension.dxo.converter.impl.BeanConverter.setValue(BeanConverter.java:178)
>        at org.seasar.extension.dxo.converter.impl.BeanConverter.setValues(BeanConverter.java:113)
>        at org.seasar.extension.dxo.converter.impl.BeanConverter.convert(BeanConverter.java:87)
>        at org.seasar.extension.dxo.command.impl.BeanToBeanDxoCommand.convertScalar(BeanToBeanDxoCommand.java:70)
>        at org.seasar.extension.dxo.command.impl.AbstractDxoCommand$ScalarConversionHelper.convert(AbstractDxoCommand.java:223)
>        at org.seasar.extension.dxo.command.impl.AbstractDxoCommand.execute(AbstractDxoCommand.java:78)
>        at org.seasar.extension.dxo.DxoInterceptor.invoke(DxoInterceptor.java:57)
>        ...
>
> DBFluteのコード生成テンプレートのCDef.vmのtoString...の部分をコメントアウトすることで正常に動作することは確認できたのですが、今後のUPGやDBFlute内部でのtoStringの利用等を想定するとVMファイルの編集などDBFluteに直接手を加えるのはできるだけ避けたいです。
>
> こちら何かよい解決方法はあるのでしょうか?
>
> よろしくお願い致します。
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


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