帮助识别数据库实体之间的关系(用于hibernate映射)

时间:2011-07-05 06:04:16

标签: java hibernate relation

我有一个Web应用程序,我在其中使用hibernate并使用ant在tomcat上部署。我在源目录中创建了一个带有所有映射值的hibernate.cfg.xml。

我的应用程序有一个ShoppingCart,CartItem和ItemForSale类。我需要映射CartItem和ItemForSale类之间的关系,这些类由数据库表表示。我试图解决它,如下所示..我不确定这是不是正确的方式.. 我希望你在这件事上提出建议/意见。请帮助......

CartItem有一个ItemForSale字段和数量。

class CartItem{
    ItemForSale item;
    int quantity;
    ...
}
class ItemForSale{
    String name;
    double price;
}

假设我有这两个类的一些实例,

saleitem1 = new ItemForSale("pizza",20.0);
saleitem2 = new ItemForSale("pastry",10.0);
saleitem3 = new ItemForSale("cake",30.0);

cartitem1 = new CartItem(saleitem1,1);
cartitem2 = new CartItem(saleitem1,2);
cartitem3 = new CartItem(saleitem2,1);

一个cartitem一次不能包含多个saleitem,

我在下图中显示了映射...绿线显示有效关系,而红线显示这两组之间的无效关系

relation between sets

据此,我推断,CartItem和ItemForSale.So之间存在多对一关系。在我的CartItem.hbm.xml文件中,我必须写

<class name="shop.cart.CartItem" table="CARTITEM">
    <id name="cartItem_id" column="CARTITEM_ID" type="long">
        <generator class="native"/>
    </id>
    <property name="quantity" type="int" column="QUANTITY" />

    <many-to-one name="saleitem" class="shop.domain.ItemForSale" column="ITEM_FOR_SALE_ID" lazy="false" />
</class>

这是正确的表示吗?或者我的工作方式有问题吗?

感谢

标记

1 个答案:

答案 0 :(得分:0)

看起来正确......你已经完成了单向映射...

您也可以进行双向映射(不会有太大变化,但它可以让您访问与购物车相关的所有商品。