这是项目的目录结构(使用maven2):
pom.xml
/src
/main
/java
Abc.java
/resources
hibernate.cfg.xml
database.properties
/META-INF
persistence.xml
/test
/java
AbcTest.java
/resources
database.properties
这是内容hibernate.cfg.xml
:
<hibernate-configuration>
<session-factory name="java:hibernate/SessionFactory">
<property name="hibernate.archive.autodetection">true</property>
</session-factory>
</hibernate-configuration>
这就是我所拥有的persistence.xml
:
<persistence>
<persistence-unit name="abc">
<jta-data-source>java:/abcDS</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
</properties>
</persistence-unit>
</persistence>
这是我的Abc.java
file:
import javax.persistence.*;
@Entity
public class Abc {
@Id private int id;
}
运行后mvn clean hibernate3:hbm2ddl
我得到这个输出:
18:45:55,770 INFO org.hibernate.tool.hbm2ddl.SchemaExport - writing
generated schema to file: ../target/hibernate3/sql/schema.ddl
18:45:55,770 INFO org.hibernate.tool.hbm2ddl.SchemaExport - schema export complete
[INFO] ————————————————————————————————————
[INFO] BUILD SUCCESSFUL
File schema.ddl
已创建,并且它是空的。为什么?除此之外,我的配置文件有什么问题?自从我尝试运行单元测试以来PersistenceContext
他们失败的注射NullPointerException
。看来配置有问题。网上找不到任何手册...
PS.有两个问题,我已经发现了。第一个在这里(额外的前缀应该被删除):
<property name="archive.autodetection">true</property>
第二个更有趣。当我跑步时mvn hibernate3:hbm2ddl
编译后它可以工作(因为它有.class
要使用的文件)。否则模式为空。如何指示此插件预先编译 java 类?