我尝试使用schema.ddl
从entity-pojos
生成Hibernate 4.1
包含javaee-api-6.0.jar
的Hibernate-Libraries位于WEB-INF/lib
。 (项目在JBoss 7.1.1
上运行。)
我不想使用hibernate.hbm2ddl.auto
来生成自动模式
所以我有以下蚂蚁目标:
<!-- language: xml -->
<target name="ddl-generation"
description="Export schema to DDL file">
<taskdef name="schemaexport"
classname="org.hibernate.tool.hbm2ddl.SchemaExportTask">
<classpath>
<fileset dir="WebContent/WEB-INF/lib">
<include name="*.jar" />
</fileset>
</classpath>
</taskdef>
<schemaexport
properties="${basedir}/src/META-INF/hibernate.properties"
quiet="no"
text="no"
drop="no"
delimiter=";"
output="${basedir}/schema-export.sql" />
</target>
但是当我执行它时,它失败并出现以下错误:
java.lang.ClassNotFoundException: org.jboss.logging.BasicLogger
at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1361)
at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1311)
at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1064)
我可以将jboss-logging-3.1.0.GA.jar
复制到ant-target的类路径中,但之后失败,因为javaee-api-6.0.jar
仅用于编译:
java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/transaction/SystemException
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
我该怎么做才能解决这个问题?
复制所有Jboss-Jars
?!
如何使用DDL
从JPA-Pojos
生成Hibernate 4
?
使用Hibernate3
似乎效果更好。
答案 0 :(得分:2)
您可能会发现此博客文章有用http://doingenterprise.blogspot.com/2012/05/schema-generation-with-hibernate-4-jpa.html它描述了从JPA 2.0实体生成ddl脚本的过程。虽然它使用Maven作为示例,但它可以很容易地被采用到Ant,因为它只使用main方法运行一个类。您只需要获得正确的依赖项。这份清单应该有望涵盖所有这些: