Это структура каталогов проекта (используется 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
файл:
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
Файл schema.ddl
создан, и он пуст.Зачем?И кроме того, что не так в моих файлах конфигурации?Поскольку, когда я пытаюсь запустить модульные тесты с PersistenceContext
инъекциями, они терпят неудачу с NullPointerException
.Похоже, что есть некоторые проблемы в конфигурации.Не могу найти руководство онлайн ...
PS. Есть две проблемы, я их уже нашел.Первый здесь (лишний префикс должен быть удален):
<property name="archive.autodetection">true</property>
Второй интереснее.Когда я запускаю mvn hibernate3:hbm2ddl
после компиляции, он работает (потому что у него есть .class
файлы для работы).В противном случае схема пуста. Как указать этому плагину заранее скомпилировать классы Java?