Hibernate“由hibernate工具生成”

时间:2011-06-15 06:58:09

标签: eclipse hibernate svn code-generation

当我在eclipse中生成hibernate类时,所有类文件都在更新,尽管现在在数据库中进行了真正的更改。大多数文件中唯一的变化是注释行:// 2011年6月15日上午6:50:40由Hibernate Tools 3.4.0.CR1生成。

每次重新生成此行的更改都不方便,因为它会破坏对SVN更改的跟踪。

是否有指示生成过程不生成此行?

2 个答案:

答案 0 :(得分:3)

我发现了这个: https://forum.hibernate.org/viewtopic.php?f=6&t=989777&view=next

我使用的是Windows 7和NetBeans 7,因此hibernate-tools.jar文件位于C:\Program Files\NetBeans 7.0\java\modules\ext\hibernate。由于Program Files目录通常是只读的,因此我必须使用通过Admin权限打开的WinZip打开jar。必须关闭NetBeans才能修改jar文件。

然后我导航到/pojo/Pojo.ftl文件(用于生成的.java文件)和hbm\hibernate-mapping.hbm.ftl文件(用于生成的.hbm.xml文件)并在记事本中打开它们。我只删除了$(date)部分,因此我保留了使用的Hibernate版本。当我在记事本中保存文件时,Winzip检测到更改并询问我是否要更新.jar文件。

然后,当我重新启动NetBeans并对我的文件进行重新生成时,日期已经过去了。有点痛苦,但它确实有效。

答案 1 :(得分:3)

自定义freemarker模板(由CuppM解释)是一种方法。不过,您不必将自定义模板放回到jar中。例如,如果使用hibernate tool ant任务,则可以指定“templatepath”和hbmtemplate属性:

<hibernatetool destdir="hibernate-model-gen/pojo" templatepath="hibernate-model-gen/customized-templates">
    <jdbcconfiguration configurationfile="hibernate-model-gen/hibernate.cfg.xml" packagename="open.pub.proto.core.model" revengfile="hibernate-model-gen\gen-conf\hibernate.reveng.xml" detectmanytomany="true" />
    <hbmtemplate templateprefix="pojo/" template="pojo/Pojo.ftl" filepattern="{package-name}/{class-name}.java">
        <property key="jdk5" value="true" />
        <property key="ejb3" value="true" />
    </hbmtemplate>
</hibernatetool>

此外,在专用目录中生成pojos是一种很好的做法,而不是源代码pojos。然后,您只能复制已在源代码pojos上更改过的pojos。