本帖最后由 QQ371496669 于 2012-04-12 15:11:09 编辑

解决方案 »

  1.   

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

    <class name="Contract" table="Contracts" 
            entity-name="CurrentContract">
        ...
        <set name="history" inverse="true" 
                order-by="effectiveEndDate desc">
            <key column="currentContractId"/>
            <one-to-many entity-name="HistoricalContract"/>
        </set>
    </class><class name="Contract" table="ContractHistory" 
            entity-name="HistoricalContract">
        ...
        <many-to-one name="currentContract" 
                column="currentContractId" 
                entity-name="CurrentContract"/>
    </class>注意这里关联是如何用entity-name来代替class的。