Hibernate - 实体 - 数据库保存

时间:2014-05-25 02:04:42

标签: java mysql hibernate

我是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 quantity;

     

型号:产品
  领域:
  int productKey;
  字符串名称;
  类别类别;
  BigDecimal unitPrice;
  String productImage;

     

型号:购物车项目
  领域:
  产品;
  int quantity;

我遇到了如何使用相应模型映射表的问题。 我已经看到我可以使用@Embedded和@Embeddable,但由于我无法修改的限制 数据库,似乎很难这样做。 任何帮助将不胜感激。谢谢!

3 个答案:

答案 0 :(得分:0)

是的,当然有可能,这正是Hibernate所使用的。从Java EE教程的Java Persistence API开始。这将向您展示如何将实体映射到数据库表以及如何查询它们。

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

答案 1 :(得分: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;   
}

答案 2 :(得分:0)

您也可以使用xml映射,启动here