Hibernate Tools可以使用注释而不是cfg.xml文件对数据库实体进行反向工程吗?

时间:2013-07-17 20:13:35

标签: java hibernate reverse-engineering

我有许多数据库表需要对POJO进行反向工程。我已经获得了创建裸POJO以及cfg.xml文件:

简单的POJO:

public class AddressType implements java.io.Serializable {
    private long addressId;
    private char addressType;
    private String addressDescription;
}        

简单的cfg.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.mycompany.model.Addytyp" table="ADDYTYP" schema="XX" catalog="BANANA">
        <comment>Address Types</comment>
        <id name="addressType" type="char">
            <column name="ADDRESS_TYPE" length="1" />
            <generator class="assigned" />
        </id>
        <property name="addressId" type="long">
            <column name="ADDRESS_ID" precision="10" scale="0" not-null="true">
                <comment>Address ID</comment>
            </column>
        </property>
        <property name="addressDescription" type="string">
            <column name="ADDRESS_DESCRIPTION" length="25" not-null="true">
                <comment>Address Decription</comment>
            </column>
        </property>
    </class>
</hibernate-mapping>

我想知道的是,是否有一个设置或工具可以使用POJO中的列和ID信息作为注释对POJO进行反向工程而不是单独的文件?例如:

带注释的简单POJO:

@Table(name="ADDYTYP")
public class AddressType implements java.io.Serializable {

    @Id
    @Column( name="ADDRESS_ID", precision=10, scale=0, nullable=true)
    private long addressId;

    @Column(name="ADDRESS_TYPE", length=1)
    private char addressType;

    @Column( name="ADDRESS_DESCRIPTION", length=25 nullable=true)
    private String addresDescription;
}        

任何人都知道要执行此操作的设置或工具吗?

1 个答案:

答案 0 :(得分:5)

咄。这个很简单,我很尴尬,我问过它。这是Hibernate Tools任务配置的简单问题。相关文档为here

正确配置为生成注释的Ant POJO生成任务如下所示:

<hbm2java  jdk5="true" ejb3="true" />

出于某种原因,这些选项默认为“false”。来自Hibernate文档:

jdk     Code will contain JDK 5 constructs 
        such as generics and static imports (Default = False)
ejb3    Code will contain EJB 3 features, e.g. using annotations 
        from javax.persistence and org.hibernate.annotations    (Default = False)

希望这有帮助!