5.3. 多次映射同一个类

对特定的持久化类,映射多次是允许的。这种情形下,你必须指定entity name来区别不同映射实体的对象实例。(默认情况下,实体名字和类名是相同的。) Hibernate在操作持久化对象、编写查询条件,或者把关联映射到指定实体时,允许你指定这个entity name(实体名字)。

  1. <class name="Contract" table="Contracts"
  2. entity-name="CurrentContract">
  3. ...
  4. <set name="history" inverse="true"
  5. order-by="effectiveEndDate desc">
  6. <key column="currentContractId"/>
  7. <one-to-many entity-name="HistoricalContract"/>
  8. </set>
  9. </class>
  10. <class name="Contract" table="ContractHistory"
  11. entity-name="HistoricalContract">
  12. ...
  13. <many-to-one name="currentContract"
  14. column="currentContractId"
  15. entity-name="CurrentContract"/>
  16. </class>

注意这里关联是如何用entity-name来代替class的。