我使用hbm文件通過Ant任務使用hbm2java生成POJO對象。我試圖改變一些硬編碼值在我的XML使用org.hibernate.type.EnumType到ENUM:在Hibernate hbm文件中使用EnumType時找不到Enum類
<set name="myCollection" table="table_name" lazy="true">
<key column="ref_id"/>
<element column="col" not-null="true">
<type name="org.hibernate.type.EnumType">
<param name="enumClass">my.path.MyEnum</param>
<param name="type">12</param>
<param name="useNamed">true</param>
</type>
</element>
</set>
我在運行調用:hbm2java第一次嘗試導致了MyEnum「未找到枚舉類」。我意識到,我需要我的類添加到classpath在我的Ant文件:
<hibernatetool destdir="${src.dir}">
<classpath>
<path location="${build.dir}"/>
</classpath>
<configuration configurationfile="${basedir}/sql/hibernate.cfg.xml" >
<fileset dir="${src.dir}" id="id">
<include name="model/*.hbm.xml" />
</fileset>
</configuration>
<hbm2java ejb3="false" jdk5="true" />
</hibernatetool>
一切工作這段時間,但事實證明這只是因爲我曾在${src.dir}
已經編譯一切${build.dir}
。如果我從「乾淨」狀態開始,我再次得到'Enum class not found',因爲它具有循環依賴性:爲了編譯代碼,我需要POJO。但爲了獲得POJO的,我需要編譯的代碼。
我能想到的唯一解決方案是首先編譯enum包中的所有東西,然後運行hbm2java,然後編譯剩下的東西。
這似乎很奇怪,但這是最好的解決方案嗎? 還是有沒有其他解決方案,我沒有想到?例如,是否有任何方法讓它查看我的源代碼?