Doma-Genが生成するエンティティクラスのプロパティの型を固定化するには?
上と似た感じで、2つクラスを作る必要があります。いずれもdoma-gen-x.x.x.jarに依存。
プロパティクラス名のリゾルバクラスを拡張
public class MyEntityPropertyClassNameResolver extends EntityPropertyClassNameResolver { public MyEntityPropertyClassNameResolver(File propertyFile) { super(propertyFile); } @Override public String resolve(EntityDesc entityDesc, String propertyName, String defaultPropertyClassName) { // 数値型をLongに統一 if (Byte.class.getName().equals(defaultPropertyClassName) || Short.class.getName().equals(defaultPropertyClassName) || Integer.class.getName().equals(defaultPropertyClassName) || Long.class.getName().equals(defaultPropertyClassName)) { return Long.class.getName(); } return super .resolve(entityDesc, propertyName, defaultPropertyClassName); } }
グローバルファクトリクラスを拡張(上のクラスのインスタンスを返します)
public class MyGlobalFactory extends GlobalFactory { @Override public EntityPropertyClassNameResolver createEntityPropertyClassNameResolver( File propertyFile) { return new MyEntityPropertyClassNameResolver(propertyFile); } }
ビルドファイルのgenタスクの定義。
<gen dialectName="${dialectName}" driverClassName="${driverClassName}" url="${url}" user="${user}" password="${password}" globalFactoryClassName="example.MyGlobalFactory"> ... </gen>
globalFactoryClassName属性にGlobalFactoryを継承したクラス名を指定します。