【问题标题】:How to map 2 identical tables (same properties) to 1 entity如何将 2 个相同的表(相同的属性)映射到 1 个实体
【发布时间】:2011-03-07 03:19:16
【问题描述】:

请帮我解决这个问题。

我有两张相同的表,一张是时间表,另一张是 timetable_bk。这两个表具有相似的属性或字段。现在我想将 2 个表映射到一个实体类(alltimetable)。

我已经尝试过 Inheritance.TABLE_PER_CLASS 策略,但是当我使用 AllTimetable 进行查询时。它什么也不返回。

请帮助我。我搜索了很多次,但仍然没有得到答案。

最好的问候。

【问题讨论】:

    标签: hibernate nhibernate-mapping


    【解决方案1】:

    要将两个相同的表映射到一个类,您需要使用 Hibernate 或 NHibernate 的 entity-name 属性。文档在这里:

    http://docs.jboss.org/hibernate/core/3.2/reference/en/html/mapping.html#mapping-entityname

    例如,要将单个类 Order 映射到 Order 和 OrderHistory 表,您可以创建一个映射文件,使用新的实体名称将订单类映射到两个表,如下所示:

    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
     <class name="DomainModel.Order, DomainModel"
         table="Orders" entity-name="Order">`  
             <id name="_id" access="field" column="OrderId">
                 <generator class="assigned"/>
             </id>
            <property name= ...>
     </class>
     <class name="DomainModel.Order, DomainModel"
         table="OrderHistories" entity-name="OrderHistory">
             <id name="_id" access="field" column="OrderId">
                <generator class="assigned"/>
             </id>
            <property name= ...>
    </class>
    </hibernate-mapping>
    

    然后根据您需要的实体类型,您可以调用适当的会话方法:

    _session.Save("Order", myOrder) 
    

    _session.Save("OrderHistory", myOrder)
    

    等等。一般来说,实体名必须替换所有 Hibernate 调用中的类名。

    【讨论】:

    • 感谢西西弗斯。但是,我正在使用 hibernate 注释来映射,所以你能告诉我应该如何处理注释来遵循你的解决方案吗?
    • 不,我对此无能为力。 entity-name 在很大程度上被忽略了,甚至对于常规的 Hibernate 也没有很好的记录。我无法确定它是否甚至支持注释。您应该在问题中指定您正在使用注释,我的印象是大多数人没有使用它们。
    • Getting 'org.hibernate.MappingException: Unknown entity: xxx' error after adding 'table' and 'entity-name' tags in the xml mapping file.我试图在这里将两个不同的表映射到同一个 java 类。它适用于两个不同的 xml 映射文件。尝试将其与上述方法结合使用。知道为什么会发生此错误吗?我错过了什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    相关资源
    最近更新 更多