2014-05-25 131 views
0

我對Hibernate,並要求用表的數據庫具有這些列休眠 - 實體 - 數據庫中保存

表的工作:tbl_product //列出庫存項目
柱:
key_product
key_category
fld_product_name
fld_inventory_qty
fld_unit_price
fld_product_image

表:tbl_order_detail //購物車 色譜柱:
key_order_detail
key_order(參照tbl_order.key_order)
key_product(參照tbl_product.key_product)
fld_unit_price
fld_quantity

表tbl_order //購物車和用戶的數據透視表 - 總購物車的價格
列:
key_order
key_user
fld_total_amount

我的模型(對象)是這樣的:

型號:InventoryItem
領域:
產品的產品;
int數量;

型號:產品
領域:
INT的ProductKey;
字符串名稱;
分類分類;
BigDecimal unitPrice;
String productImage;

型號:車項目
領域:
產品的產品;
int數量;

我面臨着如何將表格與相應模型進行映射的問題。 我已經看到,我可以使用@Embedded和@Embeddable,但由於限制我無法修改數據庫 ,所以似乎很難這樣做。 任何幫助將不勝感激。謝謝!

+0

我看不到你想要將tbl_product分成實體類的原因:InventoryItem&Product。我只是使用一個類 – Kalyan

+0

因爲如果產品將包含字段'數量',則該字段將變得毫無用處,並且一旦產品在「購物車項目」內部就沒有意義 – user3286528

+0

噢......那有點複雜;我會更新我的答案。 – Kalyan

回答

0

請嘗試以下。

更新時間:

的映射表:tbl_product

@Entity 
@Table(name="tbl_product") 
public class Product { 

    @Id 
    @Column(name = "key_product") 
    private int productKey; 

    @Column(name = "fld_product_name") 
    private String name; 

    @Column(name = "fld_product_name") 
    private BigDecimal unitPrice; 

    @Column(name = "fld_product_image") 
    private String productImage; 

    @OneToOne(mappedBy="product") 
    private InventoryItem inventoryItem; 
} 

@Entity 
@Table(name="tbl_product") 
public class InventoryItem { 

    @Id 
    @Column(name = "key_product") 
    private int productKey; 

    @Column(name = "fld_inventory_qty") 
    private int quantity; 

    @OneToOne 
    @PrimaryKeyJoinColumn 
    private Product product; 
} 

的映射tbl_order將

@Entity 
@Table(name="tbl_order") 
public class ShoppingCartItem { 

    @Id 
    @Column(name="key_order") 
    private int keyOrder; 

    @Column(name="fld_total_amount") 
    private BigDecimal totalAmount; 

    //I guess this is a foreign key for User entity. I hope you can map it by yourself 
    @Column(name="key_user") 
    private int keyUser;   

@OneToOne(mappedBy="shoppingCartItem") 
private ShoppingCartItemDetails shoppingCartDetails; 
} 

爲表tbl_order_detail映射將

@Entity 
@Table(name="tbl_order_detail") 
public class ShoppingCartItemDetails { 

    @Id 
    @Column(name="key_order_detail") 
    private int keyOrderDetail; 

    @Column(name="key_order", insertable=false, updatable=false) 
    private int keyOrder; 

    @OneToOne 
    //@JoinColumn used to map foreign key with primary key 
    @JoinColumn(name="key_order", referencedColumnName="key_order") 
    private ShoppingCartItem shoppingCartItem; 

    @Column(name="key_product", insertable=false, updatable=false) 
    private int keyProduct; 

    @OneToOne 
    @JoinColumn(name="key_product", referencedColumnName="key_product") 
    private Product product; 

    @Column(name="fld_unit_price") 
    private BigDecimal unitPrice; 

    @Column(name="fld_quantity") 
    private int quantity; 
} 
+0

我看到這個問題的另一個問題是我有另一個名爲ShoppingCartItem的實體,它也會引用Product。 爲的ShoppingCartItem表看起來像 key_order, key_product(參照產品在tbl_product), fld_unit_price, fld_quantity。 – user3286528

+0

如果你可以用你所有的表格更新你的問題,我會嘗試給出完整的映射 – Kalyan