这是一个真正可惜的问题,在Hibernate v 5.2.12中提出这个问题三年之后,仍然不容易找到如何在不使用注释的情况下生成元模型。无论如何,我将在此处描述我的解决方案,因为此问题(没有任何答案)会弹出,作为查询的搜索结果“生成无注释的元模型”。我挣扎了一下这个任务,但毕竟我这个Ant任务到了那里:
<target name="jpa_metamodel">
<delete dir="..\\src_tmp"/>
<copy todir="..\\src_tmp">
<fileset dir="..\\src">
<include name="my/model/package/*.java"/>
<include name="META-INF/**/*.xml"/>
</fileset>
</copy>
<replace file="../src_tmp/my/model/package/AbstractEntity.java" token="class" value="@javax.persistence.Entity class"/>
<javac srcdir="..\\src_tmp"
destdir="..\\src_jpa_generated"
failonerror="true"
fork="false">
<compilerarg value="-proc:only"/>
<compilerarg line="-s ..\\src_jpa_generated"/>
<compilerarg line="-Adebug=true"/>
<classpath>
<fileset dir="..\\dependencies\\hibernate">
<include name="**\\*.jar"/>
</fileset>
<pathelement location="../src_tmp"/> <!-- to put META-INF in classpath -->
</classpath>
</javac>
</target>
与Hibernate medamodel产生的问题是:
/META-INF/persistence.xml
和/META-INF/orm.xml
中搜索在类路径,而不是在源文件夹中。然而它似乎还不够,因为映射XML被添加到类路径之后,它们被正确地发现并且生成器进程提到了类(每个类的日志条目都被发射),但是由于某种原因,仍然没有产生输出。因此,下一步......
看来,如果没有实际的注释是不太可能的。或者也许是这样,但我仍然不知道如何,但我可以用简单的解决方法生活。我只是自动添加@Entity
注释到临时复制的来源。其实我只在一个文件中添加注释,但在我的情况下,它恰好是我的实体层次结构的根。这可能有意义,也可能不会 - 我没有麻烦检查。然而,这一步的需要表明,为没有注释编译的实体类生成元模型可能很困难(不可能?)。
您需要记住约-s编译器arg将生成的* .java文件存储在某处。
希望这可能有助于未来的某个人。
“没有运气”是什么意思?你有错误吗?错误,警告?我还没有尝试过,但是[手动](https://docs.jboss.org/hibernate/orm/4.3/topical/html/metamodelgen/MetamodelGenerator.html)声明生成器会选择'persistence.xml'并且如果它们在类路径*上,则默认为'orm.xml'。注意“提示”:您需要将' persistence-unit-metadata>'添加到您的配置中。 –
mabi
2014-10-27 23:18:10
没有运气意味着在这里:只是没有按预期做,即没有生成任何东西。实际上,没有注释的实体在我的类路径中,处理器没有踢,即我甚至无法传递处理器选项,如“-Adebug = true”或指定一个不同的配置资源与“-ApersistenceXml = ...” 。 – whaefelinger 2014-10-28 10:18:05
我知道,这个线程很旧。但也许现在你知道如何解决这个问题,我有与hbm.xml文件相同的问题没有生成任何东西。 – Bagdat 2017-01-30 04:05:52