Я просматривал и видел похожий пост (не уверен, как я его пропустил в первую очередь), но в любом случае, когда я добавил дополнительный hbm2hbmxml в мою сборку; сборка не выдает ошибку
<execution>
<id>hbm2hbmxml</id>
<phase>generate-resources</phase>
<goals>
<goal>hbm2hbmxml</goal>
</goals>
<inherited>false</inherited>
<configuration>
<components>
<component>
<name>hbm2hbmxml</name>
<outputDirectory>target/classes</outputDirectory>
</component>
</components>
<componentProperties>
<packagename>com.sapient.dss.dbci.domain</packagename>
</componentProperties>
</configuration>
</execution>
Но это не решение, которое я ищу. Когда я вижу hibernate.cfg.xml, он использует ресурсы отображения, указывающие на .hbm.xmls; и сгенерированные источники Java используют аннотации JPA !!!
hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/liquibrain</property>
<property name="hibernate.connection.username">liquibrain</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<mapping resource="com/dss/domain/Foo.hbm.xml" />
<mapping resource="com/dss/domain/Bar.hbm.xml" />
</session-factory>
</hibernate-configuration>
и вот выдержка из сгенерированного источника Java:
/**
* Foo generated by hbm2java
*/
@Entity
@Table(name="iteration"
,catalog="liquibrain"
)
public class Foo implements java.io.Serializable {
...
...
@Id @GeneratedValue(strategy=IDENTITY)
@Column(name="id", nullable=false)
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
...
...
...
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="bar_foos", joinColumns = {
@JoinColumn(name="foo_id", nullable=false, updatable=false) }, inverseJoinColumns = {
@JoinColumn(name="bar_id", nullable=false, updatable=false) })
public Set getBars() {
return this.bars;
}
Как файлы hbm, так и исходные файлы java упакованы в JAR, но, поскольку hibernate.cfg.xml упоминает отображение через .hbm.xml, я уверен, что так оно и будет ссылаться. Так есть ли способ генерировать исходный код Java без дублирования информации в форме сопоставлений и конфигураций аннотаций в POJO? Меня больше смущает плагин, чем раньше.