Hibernate反向工程-有没有排除不必要列的智能方法?

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"/>

我有一个表有300列 我想使用Eclipse-Hibernate工具通过反向工程从表中获取POJO。 我不希望生成的POJO中存在所有列

问题是列太多,因此我需要在hibernate.reveng.xml文件中指定所有列的名称,以排除其中的许多列

我知道如何在hibernate.reveng.xml文件中使用下面的标记排除每一列

<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;
}