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

gonbe nanashi [E-MAIL ADDRESS DELETED]
2009年 10月 31日 (土) 18:25:54 JST


はじめまして。
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 メーリングリストの案内