0

hibernateを使用し、antを使用してtomcatにデプロイするWebアプリがあります。すべてのマッピング値を使用してソースディレクトリに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);

カートアイテムには、一度に複数のセールアイテムを含めることはできません。

下の図にマッピングを示しました。緑の線は有効な関係を示し、赤の線はこれら2つのセット間の無効な関係を示しています。

セット間の関係

このことから、 CartItemとItemForSaleの間には多対1の関係があると推測します。したがって、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>

これは正しい表現ですか?それとも、私がそれを解決した方法に何か問題がありますか?

ありがとう

マーク

4

1 に答える 1

0

正しいように見えます...単方向マッピングを行いました...

双方向マッピングを行うこともできます (ほとんど変わりませんが、カートに関連するすべてのアイテムにアクセスできます。

于 2011-07-05T06:11:49.827 に答える