首页 > 解决方案 > 将 Hibernate Entity 类从 HBM 文件转换为 Annotation 类

问题描述

InstrumentImpl.hbm.xml

    <hibernate-mapping>
    <class name="com.test.model.impl.InstrumentImpl" table="TEST_INSTRUMENT" discriminator-value="instrument" lazy="false" batch-size="20">
        <cache usage="read-write"/>
        <id name="longId" type="long" column="T05_ID">
            <generator class="sequence">
                <param name="sequence">TEST_SEQ</param>         
            </generator>
        </id>
        <discriminator column="T05_INSTRUMENT_TYPE" type="string" length="10" />
        <property name="instrument">
            <column name="T05_INSTRUMENT" length="50" index="I05_INSTRUMENT"/>
        </property> 
        <property name="instrumentName" column="T05_INSTRUMENT_NAME" length="100" />
        <many-to-one name="mandant" lazy="proxy" class="com.test.model.impl.MandantImpl">
            <column name="FK_T05_T09_MANDANT" sql-type="VARCHAR2(3)"/>
        </many-to-one>
        <property name="enabled" type="yes_no" column="T05_ENABLED"/>

        <set name="dualControlJobs" inverse="true" lazy="true" cascade="save-update" batch-size="20">
            <key column="FK_T16_T05_INSTRUMENT_OBJECT" />
            <one-to-many class="com.test.model.impl.DualControlJobImpl" />
        </set>

        <subclass name="com.test.model.impl.PriceCheckInstrumentImpl" discriminator-value="pricecheck" lazy="false" batch-size="20">
            <many-to-one name="priceCheckCategory" column="FK_T05_T11_PRICE_CHECK" class="com.test.model.impl.PriceCheckCategoryImpl"/>
        </subclass>
    
    </class>
</hibernate-mapping>

InstrumentImpl.java

import java.util.Set;

public class InstrumentImpl extends EntityImpl {

    private String instrument;
    private String instrumentName;
    private boolean enabled = true;
    private Set<DualControlJobImpl> dualControlJobs;

    public InstrumentImpl() {
    }

    public InstrumentImpl(String instrument) {
        this.instrument = instrument;
    }

    @Override
    public Long getLongId() {
        return super.getLongId();
    }

    public String getInstrument() {
        return instrument;
    }

    public void setInstrument(String instrument) {
        this.instrument = instrument;
    }

    public String getInstrumentName() {
        return instrumentName;
    }

    public void setInstrumentName(String instrumentName) {
        this.instrumentName = instrumentName;
    }

    public Set<DualControlJobImpl> getDualControlJobs() {
        return dualControlJobs;
    }

    public void setDualControlJobs(Set<DualControlJobImpl> set) {
        dualControlJobs = set;
    }

    public void setEnabled(boolean enabled) {
        this.enabled = enabled;
    }

    public boolean getEnabled() {
        return enabled;
    }
}

我正在将我的应用程序从 Hibernate 3.x 转换为 Hibernate 5.x 版本,并将所有基于 hibernate xml 的类转换为基于注释的实体类。

如何将这个典型的 HBM 文件转换为基于 hibernate 注释的实体类?

标签: javahibernate-5.xhibernate3

解决方案


推荐阅读