hibernatetools ant任务 - hbm2java - 创建没有package语句的pojo

时间:2012-08-23 07:20:37

标签: hibernate-tools hbm2java

我正在使用ant task将我的映射(hbm.xml)导出到pojo类。 它在映射目录中生成POJO文件。但是Classes错过了Package声明。它只是在默认包

中创建所有文件
// default package
// Generated Aug 23, 2012 12:34:40 PM by Hibernate Tools 3.2.2.GA

这是我的任务的ant构建文件。

    <project name="Hibernate Tools for Ant - hbm2java" default="gensrc">

    <path id="tools">
        <path location="lib/hibernate-tools-3.2.3.GA.jar"/>
        <path location="lib/hibernate3.6.10.jar"/>
        <path location="lib/freemarker-2.3.8.jar"/>
        <path location="lib/hsqldb-2.2.4.jar"/>
        <path location="lib/commons-logging.jar"/>
        <path location="lib/dom4j-1.6.1.jar"/>
        <path location="lib/slf4j-api-1.6.1.jar"/>
        <path location="lib/hibernate-jpa-2.0-api-1.0.1.Final.jar"/>
    </path>
    <taskdef name="gen-src" classname="org.hibernate.tool.ant.HibernateToolTask"
             classpathref="tools"/>
    <target name="gensrc">
        <gen-src destdir="src/main/java">
            <configuration
                    configurationfile="src/main/resources/hibernate.cfg.xml">
                <fileset dir="src/main/java/com/kee/example/domain/maps">
                    <include name="Event.hbm.xml"/>
                </fileset>
            </configuration>
            <hbm2java destdir="src/main/java/com/kee/example/domain"/>
        </gen-src>
    </target>
</project>

默认的Pojo.ftl(在hibernate-tools.jar中)声明如下

 ${pojo.getPackageDeclaration()}
// Generated ${date} by Hibernate Tools ${version}

我应该更改什么才能在生成的POJO中获得正确的包声明。

更新 的 这是我的映射文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.kee.example.domain">
    <meta attribute="generated-class">EventBase</meta>
    <meta attribute="implement-equals">true</meta>
    <meta attribute="scope-field">protected</meta>
    <class name="com.kee.example.domain.Event" table="event">
        <id name="id" type="java.lang.Long">
            <generator class="native"/>
        </id>
        <property name="eventDate" type="timestamp"/>
        <property name="eventString" type="java.lang.String"/>
    </class>
</hibernate-mapping>

1 个答案:

答案 0 :(得分:0)

我在maven中遇到了同样的问题并且不确定原因,但是一旦我开始使用 annotationconfiguration 而不是 jdbcconfiguration ,它就解决了。

<plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>hibernate3-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <components>
                    <component>
                        <name>hbm2ddl</name>
                        <implementation>annotationconfiguration</implementation>
                        <outputDirectory>${db.src.dir}</outputDirectory>
                    </component>
                    <component>
                        <name>hbm2java</name>
                        <implementation>annotationconfiguration</implementation>
                        <outputDirectory>src/main/java</outputDirectory>
                    </component>
                </components>
                <componentProperties>
                    <drop>true</drop>
                    <create>true</create>
                    <export>false</export>
                    <format>true</format>
                    <jdk5>true</jdk5>
                    <ejb3>true</ejb3>
                    <outputfilename>${ddl.file}</outputfilename>
                    <templatepath>src/main/resources/hibernate-template</templatepath>
                    <delimiter>;</delimiter>
                    <configurationfile>src/main/resources/hibernate.cfg.xml</configurationfile>
                </componentProperties>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>${jdbc.groupId}</groupId>
                    <artifactId>${jdbc.artifactId}</artifactId>
                    <version>${jdbc.version}</version>
                </dependency>
            </dependencies>
        </plugin>

我不想要带注释的pojo类,所以我在* .ftl文件中注释了代码。