我找到了解决此问题的方法。问题本身似乎与以下事实有关:Netbeans
6.5(直到现在是我的更高版本)不允许您从现有
hibernate.reveng.xml文件对数据库进行反向工程。该版本预定在版本7中可用。
我发现的解决方法是创建一个ant任务来重新创建
hbm.xml和pojo
java文件。我目前很想在进行清理和构建时发生这种情况,但是我将尝试寻找一种将其完全分离的方法,因为只有在数据库模式更改时才需要运行它。
为此,尽管您需要进行编辑和构建,但仍需要编辑
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="srchibernate.cfg.xml" packagename="*the package where you want them recreated*" revengfile="srchibernate.reveng.xml" detectmanytomany="true" /> <hbm2hbmxml destdir="src" /> <hbm2java destdir="src" /> </hibernatetool></target>
- 删除部分将删除现有的hbm和pojo文件,然后重新创建它们。
- 该
configurationfile
点到你的主配置文件。 - 包名称是要在其中创建它们的点分隔的包(
com.stackoverflow.pojo
例如)。 - 这
revengfile
是创建hbm和pojo文件时要使用的逆向工程xml文件。 - 在
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>
在schema-selection标签之后。
因此,整洁的构建和时间戳不会
java.sql.Timestamp代替
Serializable对象。
我知道这是一个很长的答案,但是对于您必须在
hibernate.reveng.xml文件中设置的任何其他更改(我认为),这也应该起作用。我不是hibernate专家,因此您的工作量可能与此不同。
更新:
所以经过一番谷歌搜索后,我发现了这个网站,有关Netbeans中的自定义蚂蚁任务。因此,我只是简单地将目标的名称更改为
gen-dao,现在,每次执行清理和构建操作时,它就不会运行,而只是在我专门调用它时。



