Я нашел решение этой проблемы. Сама проблема, похоже, связана с тем фактом, что Netbeans 6.5 (и более поздние версии до этого момента) не позволяют вам выполнить обратное проектирование базы данных из существующего файла hibernate.reveng.xml
. Это будет доступно в версии 7.
Обходной путь, который я нашел, заключается в создании задачи ant для воссоздания java-файлов hbm.xml
и pojo. В настоящее время у меня такая зацепка происходит, когда я выполняю очистку и сборку, но я собираюсь попытаться найти способ полностью разделить ее, так как ее нужно будет запускать только при изменении схемы базы данных.
Для достижения этой цели, когда вы выполняете чистку и сборку, хотя вам необходимо отредактировать файл build.xml
.
Первая часть - это библиотеки, которые вам понадобятся. Так что добавьте:
<path id="toolslib">
<path location="lib/hibernate-support/hibernate-tools.jar" />
<path location="lib/hibernate-support/hibernate3.jar" />
<path location="lib/hibernate-support/freemarker.jar" />
<path location="lib/hibernate-support/jtidy-r938.jar" />
<path location="lib/ojdbc14.jar" />
</path>
На вашем компьютере уже должны быть файлы hibernate-tools.jar, hibernate3.jar и ojdbc14.jar. Так что просто измените путь к ним. freemaker.jar и jtidy-r938.jar необходимо будет загрузить, поскольку у меня их не было.
Ниже в build.xml
вам нужно добавить:
<taskdef name="hibernatetool"
classname="org.hibernate.tool.ant.HibernateToolTask"
classpathref="toolslib">
<classpath>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
</classpath>
</taskdef>
Последний раздел, который вам понадобится, - это набор для запуска в разделе пост-очистки:
<target name="-post-clean">
<delete dir="src/*Put the foler where your pojos and hbm.xml files are located*"/>
<hibernatetool>
<jdbcconfiguration
configurationfile="src\hibernate.cfg.xml"
packagename="*the package where you want them recreated*"
revengfile="src\hibernate.reveng.xml"
detectmanytomany="true"
/>
<hbm2hbmxml destdir="src" />
<hbm2java destdir="src" />
</hibernatetool>
</target>
- Часть удаления удалит существующие файлы hbm и pojo, прежде чем они будут заново созданы.
-
configurationfile
указывает на ваш основной файл конфигурации.
- Имя пакета - это разделенный точками пакет, в котором вы хотите их создать (например,
com.stackoverflow.pojo
).
-
revengfile
- это XML-файл обратного инжиниринга, который используется при создании файлов hbm и pojo.
-
hbm2hbmxml
создаст hbm.xml
файлы ваших таблиц.
-
hbm2java
создаст файлы java pojo ваших таблиц.
Теперь, чтобы получить отметки времени Oracle, отличные от Serializable
, отредактируйте файл hibernate.reveng.xml
и добавьте:
<type-mapping>
<sql-type jdbc-type="OTHER" hibernate-type="java.sql.Timestamp" />
</type-mapping>
сразу после тега выбора схемы.
Таким образом, очистка и сборка и временные метки не будут java.sql.Timestamp
вместо Serializable
объектов.
Это длинный ответ, который я знаю, но он также должен работать для любых других изменений, которые вы должны были бы установить в файле hibernate.reveng.xml
(я думаю). Я не эксперт в спящем режиме, поэтому ваш пробег может варьироваться в зависимости от этого.
UPDATE:
Поэтому после некоторого поиска я нашел этот сайт о пользовательских задачах ant в Netbeans. Поэтому я просто изменил имя цели на gen-dao
, и теперь она не запускается каждый раз, когда я выполняю очистку и сборку, только когда я специально вызываю ее.