Hibernate关系配置之一对多映射配置

客户实体类—-“一”

//客户实体类
public class Customer {
    private Integer cid;
    private String custName;
    private String custLevel;
    // 在客户实体类里面表示多个联系人,一个客户有多个联系人
    // hibernate要求使用集合表示多的数据,使用set集合(固定要求,无序)
    private Set<LinkMan> setLinkMan = new HashSet<LinkMan>();

    public Set<LinkMan> getSetLinkMan() {
        return setLinkMan;
    }

    public void setSetLinkMan(Set<LinkMan> setLinkMan) {
        this.setLinkMan = setLinkMan;
    }


    public Integer getCid() {
        return cid;
    }

    public void setCid(Integer cid) {
        this.cid = cid;
    }

    public String getCustName() {
        return custName;
    }

    public void setCustName(String custName) {
        this.custName = custName;
    }

    public String getCustLevel() {
        return custLevel;
    }

    public void setCustLevel(String custLevel) {
        this.custLevel = custLevel;
    }

}

客户实体类配置—-“一”

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <!-- 配置类和表对应 
        class标签
        name属性:实体类全路径
        table属性:数据库表名称
    -->
    <class name="com.jiudianlianxian.entity.Customer" table="t_customer">
        <!-- 主键 -->
        <id name="cid" column="cid">
            <generator class="native"></generator>
        </id>
        <!-- 其它属性 -->
        <property name="custName" column="custName"></property>
        <property name="custLevel" column="custLevel"></property>
        <!-- 在客户映射文件中,表示所有联系人 
            使用set标签表示所有联系人
            set标签里面有name属性:属性值写在客户实体类里面表示联系人的set集合名称
                inverse属性默认值:false不放弃关系维护
                            true表示放弃关系维护
        -->
        <!-- inverse属性:默认false即不放弃维护外键的机会,true即放弃维护外键的机会   配置了inverse属性为true后,添加联系人时,就不会再客户方维护联系人的外键,需要再次手动维护    inverse="true"-->
        <set name="setLinkMan" cascade="save-update,delete" inverse="true">
            <!-- 一对多建表,有外键
                hibernate机制:双向维护外键,在一和多那一方都配置外键 修改时会修改两次,性能上有缺陷
                column属性值:外键名称
             -->
            <key column="clid"></key>
            <!-- 客户所有的联系人,class里面写联系人实体类全路径 -->
            <one-to-many class="com.jiudianlianxian.entity.LinkMan"/>
        </set>
    </class>
</hibernate-mapping>

联系人实体类—-“多”

//联系人
public class LinkMan {
    private Integer lkm_id;
    private String lkm_name;
    // 在联系人实体类里面表示所属客户
    private Customer customer;

    public Customer getCustomer() {
        return customer;
    }

    public void setCustomer(Customer customer) {
        this.customer = customer;
    }

    public Integer getLkm_id() {
        return lkm_id;
    }

    public void setLkm_id(Integer lkm_id) {
        this.lkm_id = lkm_id;
    }

    public String getLkm_name() {
        return lkm_name;
    }

    public void setLkm_name(String lkm_name) {
        this.lkm_name = lkm_name;
    }
}

联系人实体类配置—-“多”

<hibernate-mapping>
    <class name="com.jiudianlianxian.entity.LinkMan" table="t_linkman">
        <id name="lkm_id" column="lkm_id">
            <generator class="native"></generator>
        </id>
        <property name="lkm_name" column="lkm_name"></property>
        <many-to-one name="customer" class="com.jiudianlianxian.entity.Customer"
            column="clid">
        </many-to-one>
    </class>
</hibernate-mapping>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值