天天看点

Hibernate 联合主键的xml配置

Hibernate 联合主键的xml配置

一共有三种方式:

1. 直接把composite-id当成entity的一部分(Embeded composite identifier)

<composite-id> <key-property name="medicareNumber"/> <key-property name="dependent"/> </composite-id>

这种就是我们的key也是本身entity,我们不论查询还是其他操作,都需要先来new 一个entity,之后再去查询。

官方不推荐

2. mapped composite identifier

<composite-id class="MedicareId" mapped="true"> <key-property name="medicareNumber"/> <key-property name="dependent"/> </composite-id>

这种方式使用了独立的class,但是这个class是一个有其他作用entity,这样两个类都有着两个字段,需要维护。所以特点是代码冗余,所以也不推荐。

3. components as composite identifiers

<composite-id name="id" class="OrderLineId"> <key-property name="lineId"/> <key-property name="orderId"/> <key-property name="customerId"/> </composite-id>

这种使用单独的一个class作为identifier,是官方推荐的方式。这个composite class必须实现java.io.Serializable接口,重写equals和hashCode方法。

Appendix:

<composite-id class="xx" name="xx">
    <key-property name="xx" type="xx">
      <column name="xx" not-null="true" sql-type="xx"/>
    </key-property>
    <key-property name="xx" type="xx">
    ...
</composite-id>