[Seasar-user:18383] Re: [S2JDBC-Gen] [CONTAINER-232] がデグレ?
朝日奈
[E-MAIL ADDRESS DELETED]
2009年 8月 26日 (水) 22:39:15 JST
ぉぉ、早い対応ありがとうございます。
リリースまで、この方法で対応します。
Toshihiro Nakamura さんは書きました:
> 中村(taedium)です。
>
>
>> 過去にあった修正したバグが再度発生している模様です。
>> versionは1つ古い 2.4.38 ですが 2.4.39 のリリースノートを確認する限りあ
>> りませんでしたので報告をします。
>>
>
> 報告ありがとうございます。
> idGenerationパラメータにassigned以外の値を指定した場合に
> 発生していました。
> 2.4.40で対応されます。
>
>
> 以下、2.4.38での対応方法を示します。
>
> まず、AttributeModelFactoryImplを継承したクラスを作ってください。
> getAttributeModelメソッドで、プロパティの型
> Number型でなかったらGenerationTypeにnullを設定します。
>
> public class MyAttributeModelFactory extends AttributeModelFactoryImpl {
>
> public MyAttributeModelFactory(boolean showColumnName,
> boolean showColumnDefinition, boolean useTemporalType,
> PersistenceConvention persistenceConvention) {
> super(showColumnName, showColumnDefinition, useTemporalType,
> persistenceConvention);
> }
>
> @Override
> public AttributeModel getAttributeModel(AttributeDesc attributeDesc) {
> AttributeModel model = super.getAttributeModel(attributeDesc);
> if (model.getGenerationType() != null) {
> Class<?> clazz = ClassUtil.getWrapperClassIfPrimitive(model
> .getAttributeClass());
> if (!Number.class.isAssignableFrom(clazz)) {
> model.setGenerationType(null);
> }
> }
> return model;
> }
> }
>
> 次に、FactoryImplを継承して、上記クラスのインスタンスを
> EntityModelFactoryImplのコンストラクタに渡します。
>
> public class MyFactory extends FactoryImpl {
>
> public EntityModelFactory createEntityModelFactory(Command command,
> String packageName, Class<?> superclass, boolean useTemporalType,
> boolean useAccessor, boolean useComment, boolean showCatalogName,
> boolean showSchemaName, boolean showTableName,
> boolean showColumnName, boolean showColumnDefinition,
> boolean showJoinColumn, PersistenceConvention persistenceConvention) {
>
> return new EntityModelFactoryImpl(packageName, superclass,
> new MyAttributeModelFactory(showColumnName,
> showColumnDefinition, useTemporalType,
> persistenceConvention),
> new AssociationModelFactoryImpl(showJoinColumn),
> new CompositeUniqueConstraintModelFactoryImpl(), useAccessor,
> useComment, showCatalogName, showSchemaName, showTableName);
> }
> }
>
> 最後に、gen-entityタスクで、上記のクラスを指定してください。
>
> <gen-entity
> …
> factoryclassname="example.MyFactory"
> />
>
Seasar-user メーリングリストの案内