我使用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文件中设置的名称。 而不是我得到的代码位于正确的文件夹结构,但名称与数据库完全相同。
我没理解,这是一个简单的程序,我不能让它运作良好。
任何帮助都会被贬低。
提前致谢!
答案 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>
干杯!