Hibernate反向工程-有没有排除不必要列的智能方法?
我有一个表有300列 我想使用Eclipse-Hibernate工具通过反向工程从表中获取POJO。 我不希望生成的POJO中存在所有列 问题是列太多,因此我需要在hibernate.reveng.xml文件中指定所有列的名称,以排除其中的许多列 我知道如何在hibernate.reveng.xml文件中使用下面的标记排除每一列Hibernate反向工程-有没有排除不必要列的智能方法?,hibernate,reverse-engineering,Hibernate,Reverse Engineering,我有一个表有300列 我想使用Eclipse-Hibernate工具通过反向工程从表中获取POJO。 我不希望生成的POJO中存在所有列 问题是列太多,因此我需要在hibernate.reveng.xml文件中指定所有列的名称,以排除其中的许多列 我知道如何在hibernate.reveng.xml文件中使用下面的标记排除每一列 <table name="PEOPLE"> <column name="REG_CODE" exclude="true"/>
<table name="PEOPLE">
<column name="REG_CODE" exclude="true"/>
..... <!-- around 300 lines to exclude unnecessary columns -->
</table>
.....
在输入(或从生成的.hbm.xml文件复制并粘贴)所有列名之前,我想知道有什么简单的方法可以从生成的POJO中排除不必要的列
我从JBOSS站点的官方Hibernate文档中得到了一个关于使用org.Hibernate.cfg.reveng.delegatingReverseengEngineeringStrategy的提示
谁能和我分享一下你的经历
提前谢谢你。我自己找到了答案。 我想除了我没有人有这种问题。 这是我能做的一件事。 我知道它不是那么优雅,但我可以实现我想要的 reveng.xml
<hibernate-reverse-engineering>
<schema-selection match-schema="TRADE"/>
<table-filter match-name="PEOPLE"/>
<table-filter match-name="PRODUCT"/></hibernate-reverse-engineering>
}
public class CustomReverseEngineeringStrategy extends DelegatingReverseEngineeringStrategy {
public CustomReverseEngineeringStrategy(ReverseEngineeringStrategy delegate) {
super(delegate);
}
@Override
public boolean excludeColumn(TableIdentifier identifier, String columnName) {
if (identifier.getName().equals("PEOPLE") && (
columnName.equals("PERSON_CODE")
|| columnName.startsWith("NAME")
)) {
return false;
}
if (identifier.getName().equals("PRODUCT") && (
columnName.startsWith("PRODUCT_CODE")
|| columnName.startsWith("NAME")
|| columnName.startsWith("PRICE")
)) {
return false;
}
return true;
}