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

使用映射将产品项目映射到订单

梁鸿风
2023-03-14

我有4张桌子:

  • 库存(库存ID、可用数量)

一个客户可以有多个订单,而一个订单由多个orderDetails项目组成。我正在尝试将库存项目存储在由库存项目和数量整数组成的映射中。

@Entity
@Table(name = "Orders")
@AttributeOverride(name = "id", column = @Column(name = "OrderID"))
public class OrderEntity extends IdentifiableEntity {

    @OneToOne //Not sure if it is one to one?
    @JoinColumn(name = "CustomerID")
    private CustomerEntity customer;

    @ElementCollection
    @CollectionTable(name = "OrderDetails", joinColumns = @JoinColumn(name = "StockID"))
    @Column(name = "Quantity")
    @MapKeyJoinColumn(name = "OrderID")
    private Map<StockEntity, Integer> orderItems;

}

当我尝试以这种方式持久化它时,第一个库存项目将以1的orderID添加到Order详细信息表中。但是下一个是使用2的orderID插入的(不存在)。

有什么帮助吗?

共有1个答案

欧阳正德
2023-03-14

我刚试过这个,我想它是有用的,但如果我明白它为什么有用,那我就是在撒谎

    @ElementCollection
    @CollectionTable(name = "OrderDetails", joinColumns = {@JoinColumn(name = "OrderID", referencedColumnName = "OrderID")})
    @Column(name = "Quantity")
    @MapKeyJoinColumn(name = "StockReferenceID")
    private Map<StockEntity, Integer> orderItems;
 类似资料:
  • 我声明了一个订单实体。它由日期、客户和LineItem对象列表组成。 行项目具有产品和数量的属性。我正试图模拟与JPA的这种关系。每个行项目都有ID似乎不正确,但我不确定如何在JPA中表达行项目和订单之间的关系: LineItem类 我认为行项目的主键应该是产品id、数量和订单id的组合,尽管我知道我没有对此建模。

  • 我知道如何变换

  • 概述:最初,我对这个程序的预期目的是制作一个Treemap来读取文本文档,特别是找到所有单词和单词所在的索引/行。现在我想列出一个“十大”名单,其中包含使用最多的单词。我想“翻转”我的树状图,这样整型值将是按顺序排列的,然后是字符串

  • 我已经用MapStruct 1.1工作了几天,但还没有达到我所需要的。 我想做的是:我想将JPA实体映射到DTO,以便在Primefaces项目中实现更好的属性视图绑定。 所以我有我的实体如下: 病人JAVA 人JAVA 我想把这些实体画成这样: 耐心等待。JAVA 潘松多。JAVA 我编写了Mapper类和一个实用程序,就像GitHub上的官方示例中描述的那样(https://github.co

  • 问题内容: 我们有一张有很多列的大桌子。移至MySQL Cluster后,由于以下原因无法创建表: 错误1118(42000):行大小太大。不包括BLOB在内的已使用表类型的最大行大小为14000。这包括存储开销,请查阅手册。您必须将某些列更改为TEXT或BLOB 举个例子: 这是用于存储配置参数的表。我在想,我们可以将一些列合并为一个列,并将其存储为JSON对象,然后将其转换为Java对象。 例

  • 我正在使用Hibernate和JPA注释来映射我的类。当hibernate尝试映射这个类时,我遇到了一个问题 我的Social alStat类是: 我得到了这个错误: 我猜发生这种情况是因为我试图映射到一个基本类,但@ElementCollection注释不应该解决这个问题吗? 我的item类如下所示: