Hibernate ", созданный с помощью спящего режима"
Когда я генерирую классы hibernate в eclipse, все файлы классов обновляются, хотя теперь в базе данных были внесены реальные изменения. Единственное изменение в большинстве файлов - это строка комментариев://Сгенерировано 15 июня 2011 г. 6:50:40 по Hibernate Tools 3.4.0.CR1.
Изменение этой строки при каждой регенерации неудобно, так как она нарушает отслеживание изменений в SVN.
Есть ли у вас указание поручить процессу генерации не генерировать эту строку?
Ответы
Ответ 1
Я нашел это:
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 обычно является только для чтения, мне пришлось открыть jar
с помощью WinZip, который был открыт с правами администратора. NetBeans необходимо закрыть, чтобы изменить файл jar
.
Затем я просто перешел к файлу /pojo/Pojo.ftl
(для сгенерированного файла .java
) и файла hbm\hibernate-mapping.hbm.ftl
(для сгенерированного файла .hbm.xml
) и открыл их в Блокноте. Я удалил только часть $(date)
, поэтому я сохранил используемую версию Hibernate. Когда я сохранил файлы в "Блокноте", Winzip обнаружил изменения и спросил, не хочу ли я обновить файл .jar
.
Затем, когда я перезапустил NetBeans и сделал регенерацию моих файлов, дата исчезла. Вид боли, но он работает.
Ответ 2
Настройка шаблона freemarker (как объясняется CuppM) - это способ сделать это. Тем не менее, вы не вынуждены вводить настроенный шаблон обратно в банку. Например, если вы используете задачу 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, которые изменились на код сурового кода.