【问题标题】:Hibernate - Entity - Database SavingHibernate - 实体 - 数据库保存
【发布时间】:2014-07-14 02:51:23
【问题描述】:

我是 Hibernate 的新手,被要求使用包含这些列的表的数据库

Table : tbl_product //库存物品列表
列:
key_product
关键类别
fld_product_name
fld_inventory_qty
fld_unit_price
fld_product_image

Table: tbl_order_detail //购物车 栏目:
key_order_detail
key_order(参考 tbl_order.key_order)
key_product(参考 tbl_product.key_product)
fld_unit_price
fld_数量

Table tbl_order //购物车和用户的数据透视表 -- 包含购物车的总价
栏目:
key_order
关键用户
fld_total_amount

我的模型(对象)看起来像这样:

型号:InventoryItem
字段:
产品产品;
整数;

型号:产品
字段:
整数产品密钥;
字符串名称;
类别类别;
BigDecimal unitPrice;
字符串产品图像;

型号:购物车物品
字段:
产品产品;
整数;

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

【问题讨论】:

  • 我看不出为什么要将 tbl_product 拆分为实体类:InventoryItem 和 Product。我只会使用一个类
  • 因为如果产品将包含字段“数量”,一旦产品在“购物车项目”中,该字段将变得无用并且没有意义
  • ooo... 这有点复杂;我会更新我的答案。

标签: java mysql hibernate


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你也可以使用xml映射,开始here

    【讨论】:

      【解决方案3】:

      请尝试以下。

      更新:

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

      【讨论】:

      • 我看到的这个问题是我有另一个名为 ShoppingCartItem 的实体,它也将引用 Product。 ShoppingCartItem 的表类似于 key_order、key_product(引用 tbl_product 中的产品)、fld_unit_price、fld_quantity。
      • 如果您可以使用所有表格更新您的问题,我会尝试提供完整的映射
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多