如何使用hibernate注释将Map从实体映射到Value?

时间:2009-02-05 20:53:35

标签: java hibernate annotations

我有发货和产品实体。每批货物包含任意数量的任何数量的产品。即货件有一个名为products的字段,它是一个java.util.Map,其中key是发货的产品,值是该产品的实例数。

如何使用hibernate注释将其映射到数据库?

2 个答案:

答案 0 :(得分:1)

这是你必须要做的。字段map属于Shipment类,它会将每个Product映射到所发运的产品数量。

除非在Product类中正确定义不依赖于hibernate生成的id的equals和hashCode方法,否则这将无效。 (或阅读全文here)。

@CollectionOfElements(targetElement=Integer.class)
@MapKeyManyToMany(targetEntity=Product.class)
private Map<Product, Integer> map = new HashMap<Product, Integer>();

答案 1 :(得分:0)

这对我来说似乎有点奇怪,但如果我理解正确,你会想要一个具有以下内容的数据库架构:

  • 具有ID
  • 的货件表
  • 产品表,其中包含引用此ID的外键

这是一种基本的,因为这种关系是从出货方面的基本的一对多关系,当然反过来是多对一的关系。我可以给你一些例子,但实际上hibernate docs(向下滚动到底部的地图示例)似乎已经覆盖了。一些非常难以思考xml如何映射到注释应该让你感到震惊。如果您尝试在纯JPA中执行此操作,则可能会遇到一些麻烦,因为链接的示例似乎使用了公式。