当我在eclipse中生成hibernate类时,所有类文件都在更新,尽管现在在数据库中进行了真正的更改。大多数文件中唯一的变化是注释行:// 2011年6月15日上午6:50:40由Hibernate Tools 3.4.0.CR1生成。
每次重新生成此行的更改都不方便,因为它会破坏对SVN更改的跟踪。
是否有指示生成过程不生成此行?
答案 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。