【问题标题】:How do I map a Map from an Entity to a Value with hibernate annotations?如何使用休眠注释将映射从实体映射到值?
【发布时间】:2010-10-06 16:06:33
【问题描述】:

我有 Shipment 和 Product 实体。每批货物包含任意数量的任意数量的产品。 IE。发货有一个名为 products 的字段,它是一个 java.util.Map,其中键是要发货的产品,值是要发货的产品的实例数。

如何将其映射到带有休眠注释的数据库?

【问题讨论】:

    标签: java hibernate annotations


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      这对我来说似乎有点奇怪,但如果我理解正确,您将需要一个数据库架构:

      • 具有 id 的装运表
      • 具有引用此 ID 的外键的产品表

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

      【讨论】:

        猜你喜欢
        • 2016-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-18
        • 2019-06-10
        • 2015-10-31
        • 2019-12-03
        相关资源
        最近更新 更多