当前位置: 首页 > 知识库问答 >
问题:

Hibernate - 实体 - 数据库保存

邵君植
2023-03-14

我是Hibernate的新手,并要求使用具有这些列的表的数据

表:TBL _ product//库存项目列表< br >列:< br > key _ product < br > key _ category < br > fld _ product _ name < br > fld _ Inventory _ qty < br > fld _ unit _ price < br > fld _ product _ image < br >

表: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

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

模型:库存项目
字段:
产品产品产品

型号: 产品
领域:
int 产品密钥;
字符串名称;
类别类别;
大十进制单位价格;
字符串产品图像;

模型:购物车项目
字段:
产品产品产品

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

共有3个答案

韩峰
2023-03-14

请尝试以下操作。

更新时间:

表的映射: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;   
}
林德辉
2023-03-14

也可以使用xml映射,从这里开始

万俟亦
2023-03-14

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

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

 类似资料:
  • 我有生成Hibernate实体的mysql db,现在我需要从这些实体生成内存数据库进行测试。我在试图运行我的单元测试时遇到了这个错误。 /***主]o.h.发动机。jdbc。spi。SqlExceptionHelper:SQL错误:42102,SQLState:42S02 2016-02-16 18:10:47.864错误29758---[main]o.h.engine。jdbc。spi。Sql

  • 我有一个使用JPA的Spring Boot应用程序,它有两个数据源,一个用于DB2,一个用于SQL Server。 当我尝试将实体保存到SQL Server时,不会抛出任何错误,但该实体不会持久化到数据库。我看不到日志中正在生成插入。 提前感谢 下面是我尝试保存实体所执行的代码@组成部分 下面是sql Server配置。 这是SQL Server存储库 公共接口BeercupMessageLogR

  • 问题内容: 如果我的实体具有已计算字段,应在保存到数据库(db 或)之前进行更新,如何在Hibernate或Spring Data Repository之前挂接方法调用 问题答案: 我认为最好的选择是使用和注释,为实体侦听器创建配置,然后您将可以访问要保存的每个实例,每次尝试使用以下方法持久化或更新内容时都会调用此方法hibernate或spring数据存储库 您只需要在实体bean上方添加注释

  • 我正在尝试开发一个小型电子商务项目。我有一个篮子和篮子项目实体。我只是想当我为客户保存购物篮时,我想把购物篮项目保存在数据库中。我认为我不应该为篮子项目创建存储库。我应该能够保存篮子项目,同时使用篮子存储库保存篮子。 在这里,我试图通过篮子服务获得一个篮子项目,并将其设置为篮子实体并保存它。 我有什么问题?我有个例外。

  • 我有一个实体CandidateTransaction和CandidateTransactionRepository扩展了CrudRepository 我正在使用CrudRepository的save方法来保存所述实体的对象。当实体没有行时,它将创建一个自动生成的键并将其插入ID列,而不需要Java端的干预。 而且,由于CrudRepository的save()方法检查实体是否是新的,如果是新的,它

  • 我有一个问题,Spring数据没有保存实体。应用程序逻辑如下: 另一个应用程序正在监听负载相当重的Kafka主题(每秒数十条消息)并将消息插入数据库中具有“NEW”状态的表中。 @调度方法加载一个具有“NEW”状态的实体列表,这些实体被一个接一个地传输到FixedThreadPool(20个线程),它们的状态设置为“PROCESSING”和一个saveAll方法调用同一个表。 这两种日志方法都显示