如何配置hbm2java和hbm2dao以将packagename添加到生成的类中

mmm*_*mmm 5 maven-2 hibernate hibernate-tools hbm2java

我正在尝试hbm2java使用maven 配置生成POJO类和DAO对象.我正在处理的一个问题是没有生成包名.我正在使用以下pom:

<execution>
    <id>hbm2java</id>
    <phase>generate-sources</phase>
    <goals>
        <goal>hbm2java</goal>
    </goals>
    <inherited>false</inherited>
    <configuration>
        <components>
            <component>
                <name>hbm2java</name>
                <implementation>configuration</implementation>
            </component>
        </components>
        <componentProperties>
            <packagename>package.name</packagename>
            <configurationfile>target/hibernate3/generated-mappings/hibernate.cfg.xml</configurationfile>
        </componentProperties>
    </configuration>
</execution>
Run Code Online (Sandbox Code Playgroud)

然而,生成的代码从以下开始:

// default package
// Generated 2010-05-17 13:11:51 by Hibernate Tools 3.2.2.GA

/**
 * Messages generated by hbm2java
 */
public class Messages  implements java.io.Serializable {
Run Code Online (Sandbox Code Playgroud)

有没有办法强制maven生成packagename中定义的部分?

更新:

这是我的hibernate.cfg.xml,也是由hibernate-tools(hbm2cfgxml)自动生成的:

<?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.c3p0.max_size">20</property>
        <property name="hibernate.c3p0.max_statements">50</property>
        <property name="hibernate.c3p0.min_size">5</property>
        <property name="hibernate.c3p0.timeout">1800</property>
        <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
        <property name="hibernate.connection.password">password</property>
        <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/db</property>
        <property name="hibernate.connection.username">username</property>
        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <mapping resource="package/name/Messages.hbm.xml" />
    </session-factory>
</hibernate-configuration>
Run Code Online (Sandbox Code Playgroud)

Pas*_*ent 3

以防万一,这里是 hibernate3-maven-plugin 的自下而上方法的工作配置:

\n\n
  <plugin>\n    <groupId>org.codehaus.mojo</groupId>\n    <artifactId>hibernate3-maven-plugin</artifactId>\n    <version>2.2</version>\n    <executions>\n      <execution>\n        <id>generate-xml-files</id>\n        <phase>generate-resources</phase>\n        <goals>\n          <goal>hbm2hbmxml</goal>\n          <goal>hbm2cfgxml</goal>\n        </goals>\n      </execution>\n      <execution>\n        <id>generate-entities</id>\n        <phase>generate-sources</phase>\n        <goals>\n          <goal>hbm2java</goal>\n        </goals>\n      </execution>\n    </executions>\n    <configuration>\n      <components>\n        <component>\n          <name>hbm2hbmxml</name>\n          <implementation>jdbcconfiguration</implementation>\n          <outputDirectory>target/classes</outputDirectory>\n        </component>\n        <component>\n          <name>hbm2cfgxml</name>\n          <implementation>jdbcconfiguration</implementation>\n          <outputDirectory>target/classes</outputDirectory>\n        </component>\n        <component>\n          <name>hbm2java</name>\n          <implementation>configuration</implementation>\n          <outputDirectory>target/generated-sources/hibernate3</outputDirectory>\n        </component>\n      </components>\n      <componentProperties>\n        <propertyfile>src/main/resources/database.properties</propertyfile>\n        <jdk5>true</jdk5>\n        <ejb3>false</ejb3>\n        <packagename>com.mycompany.myapp</packagename>\n        <format>true</format>\n        <haltonerror>true</haltonerror>\n      </componentProperties>\n    </configuration>\n    <dependencies>\n      <dependency>\n        <groupId>org.apache.derby</groupId>\n        <artifactId>derby</artifactId>\n        <version>10.5.3.0_1</version>\n      </dependency>\n    </dependencies>\n  </plugin>\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我的文件的内容src/main/database.properties

\n\n
hibernate.connection.driver_class=org.apache.derby.jdbc.EmbeddedDriver\nhibernate.connection.url=jdbc:derby:./derbyDBs/EMPLDB\nhibernate.connection.username=APP\nhibernate.connection.password=APP\nhibernate.dialect=org.hibernate.dialect.DerbyDialect\n\n#workaround for http://opensource.atlassian.com/projects/hibernate/browse/HBX-1145\nhibernate.connection.autocommit=true \n
Run Code Online (Sandbox Code Playgroud)\n\n

这个设置:

\n\n
    \n
  1. *.hbm.xmltarget/classes(与包一起)期间生成generate-resources
  2. \n
  3. 生成一个hibernate.cfg.xml包含target/classes映射文件条目的文件。
  4. \n
  5. 从 中的映射生成实体target/generated-sources/hibernate3(我建议遵循target/generated-sources/<tool>生成源的约定,以便 IDE 自动检测到它们)。
  6. \n
\n\n

clean compile以下是针对具有两个表的示例数据库的结果:

\n\n
\n$ mvn clean 编译\n...\n$ 树目标/\n目标/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 类\n\xe2\x94\x82\ xc2\xa0\xc2\xa0\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 com\n\xe2\x94\x82\xc2\xa0\xc2\xa0\xe2\x94\x82\xc2 \xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 我的公司\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\ xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 myapp\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0 \xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 部门.class\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\ xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Department.hbm.xml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82 \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 员工.class\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\ x82\xc2\xa0\xc2\xa0\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Employee.hbm.xml\n\xe2\x94\x82\xc2\xa0\xc2\xa0\xe2 \x94\x9c\xe2\x94\x80\xe2\x94\x80 数据库.properties\n\xe2\x94\x82\xc2\xa0\xc2\xa0\xe2\x94\x94\xe2\x94\x80\xe2\ x94\x80 hibernate.cfg.xml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 生成源\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\ x80 hibernate3\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 com\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mycompany\n \xe2\x94 \x94\xe2\x94\x80\xe2\x94\x80 myapp\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Department.java\n \xe2\x94\x94\xe2\x94 \x80\xe2\x94\x80 员工.java\n
\n