暂无回复--如何用hibernate获得composite-element映射的单个对象

例如,商品表,库房表,库存表。商品表与库存表是一对多,库房表与库存表是一对多

商品映射文件是:
……
<set name="kcxxs" lazy="true" inverse="true" table="sp_kcxx">
    <key column="spid" />
    <composite-element class="com.wangbass.pojo.SpKcxx">
        <parent name="spBaseinfo" />
        <many-to-one name="spKfxx"
            class="com.wangbass.pojo.SpKfxx" column="kfbh" not-null="true">
        </many-to-one>
        <property name="kcsl" column="kcxl"
            type="java.math.BigDecimal" not-null="true">
        </property>
    </composite-element>
</set>
……
库房映射文件是:
……
<set name="kcxxs" lazy="true" table="sp_kcxx">
    <key column="kfbh"></key>
    <composite-element class="com.wangbass.pojo.SpKcxx">
        <parent name="spKfxx" />
        <many-to-one name="spBaseinfo"
            class="com.wangbass.pojo.SpBaseinfo" column="spid"
            not-null="true">
        </many-to-one>
        <property name="kcsl" column="kcxl" type="java.math.BigDecimal" not-null="true"></property>
    </composite-element>
</set>
……

库存表没有映射文件,只有实体类SpKcxx.class
         private SpBaseinfo spBaseinfo;
    private SpKfxx spKfxx;
    private BigDecimal kcsl;
    

现已产生一些新的库存实体类并已加到数据库中去,现在要读出其中一个库存,做以修改,可如何能读出单个库存。

  库存表结构:create table sp_kcxx (
   spid                 varchar(10)                    not null,
   kfbh                 varchar(5)                     not null,
   kcsl                 decimal(8,2)                   null,
   constraint PK_SP_KCXX primary key (nbbm, kfbh)
)
go  

我用如下方法,返回的却是null
public Object get(Session session, String kfbh, String spid)
            throws Exception {
        Criteria criteria =session.createCriteria(SpKcxx.class);
        Criterion criterion1=Expression.eq("kfbh",kfbh);
        Criterion criterion2=Expression.eq("spid",spid);
        criteria=criteria.add(criterion1);
        criteria=criteria.add(criterion2);
        List list=criteria.list();
        if(list.size()!=0){
        SpKcxx sk=(SpKcxx)list.get(0);
        return list.get(0);
        }
        else return null;
    }
那么如何用hibernate获得composite-element映射的单个对象呢,请教了。

[e08]今天看书明白了,组成关系的映射中,kcxx类是值类型,不是实体类型,所以不要能单独获得,因此上文中无法获得spkcxx的对象。要想单独获得,不能映射成组成关系,须映射成实体关联关系,即spBaseinfo与spKcxx是一对多,spKfxx与spKcxx也是一对多。如此才能单独获得,上文中须定义联合主键SpKcxxId。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值