我想生成一个自定义的DAO,它扩展了ClassA并实现了SampleInterface。 SampleInterface有一个方法,应该在生成此DAO时实现。而且我生成的DAO的命名约定应该在类名的末尾有DAO而不是“Home”,因为hibernate工具默认生成带有Home的DAO Classes。
我的表名是Employee,Address,Salary,我生成了我的实体,它们在com.mycompany.model包中。目前,我有地址,员工,薪资实体,其中包含所有注释和映射。我想使用以下逆向工程策略生成AddressDAO,EmployeeDAO和SalaryDAO。
以下是我的逆向工程策略课程
public class DAOReverseEngineeringStrategy extends
DelegatingReverseEngineeringStrategy {
public DAOReverseEngineeringStrategy(ReverseEngineeringStrategy delegate) {
super(delegate);
// TODO Auto-generated constructor stub
}
@Override
public Map tableToMetaAttributes(final TableIdentifier tableIdentifier) {
Map<String, MetaAttribute> metaAttributes = super
.tableToMetaAttributes(tableIdentifier);
if (metaAttributes == null) {
metaAttributes = new HashMap<String, MetaAttribute>();
}
MetaAttribute attributeExtends = new MetaAttribute("extends");
attributeExtends.addValue("ClassA");
metaAttributes.put("extends", attributeExtends);
MetaAttribute attributeImpl = new MetaAttribute("implements");
attributeImpl.addValue("SampleInterface");
metaAttributes.put("implements", attributeImpl);
MetaAttribute attributeImport = new MetaAttribute("extra-import");
attributeImport.addValue("com.mycompany.ClassA");
attributeImport.addValue("com.mycompany.SampleInterface");
attributeImport.addValue("com.mycompany.model.*");
metaAttributes.put("extra-import", attributeImport);
return metaAttributes;
}
}
谢谢。
答案 0 :(得分:0)
不确定这是否仍然开放,但无论如何都喜欢分享我的答案。
我没有尝试使用Reverse Engineering Strategy类,但是,使用dao / daoHome.ftl下可用的ftl(免费标记模板)文件。
答案 1 :(得分:0)
您可以在 hibernate-tools / dao / daohome.ftl lib中覆盖免费标记模板文件。 之后编辑文件模板模式如下:
在我的示例中,我已重命名为 {ClassName} RepositoryImpl 。 参考:http://docs.jboss.org/tools/latest/en/hibernatetools/html_single/index.html#exportes