This is the directory structure of the project (maven2 is used):
pom.xml
/src
/main
/java
Abc.java
/resources
hibernate.cfg.xml
database.properties
/META-INF
persistence.xml
/test
/java
AbcTest.java
/resources
database.properties
This is the content of hibernate.cfg.xml
:
<hibernate-configuration>
<session-factory name="java:hibernate/SessionFactory">
<property name="hibernate.archive.autodetection">true</property>
</session-factory>
</hibernate-configuration>
This is what I have in 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>
And this is my Abc.java
file:
import javax.persistence.*;
@Entity
public class Abc {
@Id private int id;
}
After running mvn clean hibernate3:hbm2ddl
I'm getting this output:
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
is created, and it's empty. Why? And besides that, what is wrong in my configuration files? Since when I'm trying to run unit tests with PersistenceContext
injections they fail with NullPointerException
. Looks like there is some problem in the configuration. Can't find any manual online…
PS. There are two problems, I found them already. The first one is here (extra prefix should be removed):
<property name="archive.autodetection">true</property>
The second one is more interesting. When I'm running mvn hibernate3:hbm2ddl
after compilation it works (because it has .class
files to work with). Otherwise the schema is empty.. How to instruct this plugin to compile java classes beforehand?