簡體   English   中英

休眠-實體-數據庫保存

[英]Hibernate - Entity - Database Saving

我是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 productKey;
字符串名稱;
類別類別;
BigDecimal單價;
字符串productImage;

型號:購物車項目
領域:
產品產品;
整數數量

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

是的,當然有可能,這正是Hibernate的用途。 從Java EE教程的Java Persistence API部分開始。 這將向您展示如何將實體映射到數據庫表以及如何查詢它們。

http://docs.oracle.com/javaee/6/tutorial/doc/bnbpy.html

請嘗試以下。

更新:

映射表: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;   
}

您也可以使用xml映射,從這里開始

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM