[Seasar-user:17239] Re: [S2JDBC]SerializableなUserDefineValueType

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2009年 4月 10日 (金) 10:32:27 JST


中村(taedium)です。

> PropertyMetaFactoryImpl#doValueTypeでの評価順が
> Serializable>UserDefineValueTypeとなっているため仕方ない
> のですが、これを回避する方法はございませんでしょうか?

もしかしたら、次のバージョンで修正されるかもしれませんが
とりあえずの回避策としては以下のものでどうでしょう?


まず、PropertyMetaFactoryImplのサブクラスを作成し
doValueTypeメソッドをオーバライドします。

  public class MyProrpertyMetaFactory 
      extends PropertyMetaFactoryImpl {  
      @Override
      protected void doValueType(PropertyMeta propertyMeta
                               , EntityMeta entityMeta) {
        //SerializableとUserDefineValueTypeの評価順を入れ替える
      }
  }

オーバライドしたメソッドでは、親のメソッドをコピペして、
SerializableとUserDefineValueTypeの評価順だけを入れ替えます。

次に、s2jdbc.diconに次の2つのコンポーネントを登録します。

  <component name="entityMetaFactory" 
    class="org.seasar.extension.jdbc.meta.EntityMetaFactoryImpl"/>	
  <component name="propertyMetaFactory"
    class="example.MyProrpertyMetaFactory"/>

name属性に"entityMetaFactory"と"propertyMetaFactory"を
指定するのは重要です。
propertyMetaFactoryのコンポーネントには
今回作成したクラスを指定してください。

-- 
Nakamura Toshihiro <[E-MAIL ADDRESS DELETED]>



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