【问题标题】:help to identify relation between database entites (for hibernate mapping)帮助识别数据库实体之间的关系(用于休眠映射)
【发布时间】:2011-09-28 12:59:13
【问题描述】:

我有一个 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);

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

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

由此,我推断,CartItem 和 ItemForSale 之间存在多对一关系。所以,在我的 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>

这是正确的表示吗?还是我的方法有问题?

谢谢

标记

【问题讨论】:

  • 不使用注解有什么原因吗?

标签: java hibernate relation


【解决方案1】:

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

您还可以进行双向映射(变化不大,但它使您可以访问与购物车相关的所有项目。

【讨论】:

  • 感谢您的响应..但是我不必在 ItemForSale 类中添加一个 caritem 字段吗?或者我可以在映射文件中执行它而不接触代码吗?
  • 是的,您必须将 Set&lt;CartItem&gt; 添加到 ItemForSale 类中。这也需要添加到映射 (XML) 中。再次,当前表示没有任何问题。
猜你喜欢
  • 1970-01-01
  • 2015-11-25
  • 1970-01-01
  • 2014-07-04
  • 1970-01-01
  • 1970-01-01
  • 2019-12-03
  • 2020-12-18
  • 1970-01-01
相关资源
最近更新 更多