hibernate关于一对一用法

首先来说一下数据库的表结构吧。主要涉及到两张表。一张是订单表sub_table 一张是商品表。

 
 
 
之后说entity
public class SubTable {
    private Integer subId;//自动编号
    
    private String subCode;//订单编号
    
    private Integer pay;//付款金额
    
    private UserTable userId;//用户号
    
    private Date subDate ;//订单日期
    
    private Product productIds;//商品
    
    private String address;//收货地址
    
    private String phone;//收件人联系电话
。。。。。

之后在说对应的hbm文件吧。只要的重点就在这里了。

<hibernate-mapping>
    <class name="cn.sprhib.model.entity.SubTable" table="sub_table" catalog="spring">
        <id name="subId" type="java.lang.Integer" column="sub_id">
            <generator class="identity"/>
        </id>
        <property name="subCode" type="java.lang.String" column="sub_code"></property>
        <property name="pay" type="java.lang.Integer" column="pay"/>
        <many-to-one name="userId" class="cn.sprhib.model.entity.UserTable" column="user_id" cascade="all" lazy="false"></many-to-one>
        <property name="subDate" type="timestamp" column="sub_date"/>
        <many-to-one name="productIds" class="cn.sprhib.model.entity.Product" column="product_id" cascade="all" lazy="false"></many-to-one>    
        <property name="address" type="java.lang.String" column="address"/>
        <property name="phone" type="java.lang.String" column="phone"></property>
    </class>
</hibernate-mapping>

我遇到的问题主要是在这里遇到的。首先,订单和商品是一对一的关系,我在库中使用了外键。查询了网上的资料,才知道一对一也是可以用many-to-one的。之后果不其然出来了。

但是问题又来了,我能查出SubTable中的所有信息,但是关联的User和商品信息却没有。后来才知道这是lazy惹得祸。之后加上lazy="false"就出来了。在这里给自己记录一下吧。

 
 
 
 
 
posted @ 2015-11-10 14:01  小祥工作室  阅读(512)  评论(0编辑  收藏  举报