NHibernate之 composite-element

composite-element,组合元素,在实际应用中有很重要的作用, 组合元素可以在很多 collections 中实现, 如 bag, set, list...,下面的示例使用的是 集合(set)
<class name="eg.Person" ...>
...
<set name="someNames" table="some_names" lazy="true">
    <key column="id"/>
    <composite-element class="eg.Name">
        <parent name="Person" />
        <property name="initial"/>
        <property name="property1"/>
        <property name="property2"/>
        <many-to-one class="eg.Address" />
    </composite-element>
</set>
...
</class>

实现 set 的元素是组合元素时, 必须正确实现 eg.Name 的 Equals() 和 HashCode(),如上例的 eg.Names的实现:
        public override bool Equals(object obj)
        {
            if (obj != null)
            {
                property1 sap = (property1 )obj;
                return (sap.property1.Equals(this.property1 ) && sap.property2.Equals(this.property2 ));
            }
            return false;
        }

        public override int GetHashCode()
        {
            return this. property1.GetHashCode() ^ this. property2.GetHashCode();
        }
其中 property1 property2 是确定元素的一个组合(本例未使用composit-id实现),可以唯一确定表 some_names 的一条记录.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值