[Seasar-user:18371] Re: [S2JDBC-Gen] [CONTAINER-232] がデグレ?
Toshihiro Nakamura
[E-MAIL ADDRESS DELETED]
2009年 8月 24日 (月) 12:21:22 JST
中村(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"
/>
--
Toshihiro Nakamura
Seasar-user メーリングリストの案内