Hibernate代码生成奇怪的行为

时间:2014-05-26 23:11:42

标签: java hibernate generated-code

我使用hibernate工具生成我的实体会产生一种奇怪的行为。 我需要“java名称”来尊重一些对话。所以我配置了de reveng.xml 就像这样:

<hibernate-reverse-engineering>
    <schema-selection match-schema="SCHEMA" match-table="PRE_.*" />

    <table-filter match-name="PRE_.*" package="com.my.ent"/>

    <table name="PRE_MY_TABLE" schema="SCHEMA" class="MyTable">
        <column name="C_ID" property="id" />
        <column name="C_COD" property="cod" />
    </table>
    <table name="PRE_MY_TABLE_2" schema="SCHEMA" class="MyTable2">
        <column name="C_ID" property="id" />
        <column name="C_COD" property="cod" />
    </table>
        ....
    <table name="PRE_MY_TABLE_N" schema="SCHEMA" class="MyTableN">
        <column name="C_ID" property="id" />
        <column name="C_COD" property="cod" />
    </table>
</hibernate-reverse-engineering>

我认为生成的代码(实体1到N)位于工具conf中设置的文件夹中,文件夹结构位于(com.my.ent)内,并且尊重在reveng文件中设置的名称。 而不是我得到的代码位于正确的文件夹结构,但名称与数据库完全相同。

我没理解,这是一个简单的程序,我不能让它运作良好。

任何帮助都会被贬低。

提前致谢!

1 个答案:

答案 0 :(得分:0)

嗯,这个问题很难解决。

问题出在表格声明中。

声明类不合格,覆盖表过滤器中的包声明,因此生成的代码将转到根文件夹,并且创建的实体不包含包声明(使用默认值)。

解决方案是声明表配置如下:

<table-filter match-name="PRE_.*" package="com.my.ent"/>

<table name="PRE_MY_TABLE" schema="SCHEMA" class="com.my.ent.MyTable">
    <column name="C_ID" property="id" />
    <column name="C_COD" property="cod" />
</table>

干杯!