跨表的Hibernate映射(可能的JOIN关系)

时间:2011-10-25 13:16:30

标签: java hibernate

hibernate可以跨多个表解析映射。

以下是示例:

  • 类制造商,表MANUFACTURER
  • Class Car,table CAR Class
  • CarType,表CAR_TYPE

ORM模型

  • 制造商一对多CAR(表CAR中的MANUFACTURER_ID_FK)
  • CAR多对一CAR_TYPE(表CAR中的CAR_TYPE_ID_FK)

我想要的是hibernate映射,它将解析给定制造商的所有CAR TYPES?

所以,如果我想得到所有车,我会写

     <set name="cars" inverse="true" cascade="all,delete-orphan" lazy="false" >
        <key property-ref="manufacturerIdFk">
            <column name="MANUFACTURER_ID_FK " precision="22" scale="0" not-null="true"/>
        </key>
        <one-to-many class="foo.bar.Car" />
    </set>

我需要的是如何为制造商购买车型?

<set name="carTypes" inverse="true" cascade="all,delete-orphan" lazy="false" >
  ???
</set>

谢谢你,请不要回答只是从“汽车”获取它:)解决方案我想实现的应该完全真正在hibernate映射上做“繁重的工作”。再次感谢。

1 个答案:

答案 0 :(得分:0)

您可以根据关联表直接将manufacturer.carTypes集合映射为ManyToMany关系:CAR。

以下是一个示例(注释): 在班级制造商

@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "CAR", joinColumns = @JoinColumn(name = "MANUFACTURER_ID_FK"), 
inverseJoinColumns = @JoinColumn(name = "CAR_TYPE_ID_FK"))
private Set<CarType> carTypes;