Как сопоставить 2 одинаковые таблицы (одинаковые свойства) с 1 объектом - PullRequest
2 голосов
/ 07 марта 2011

Пожалуйста, помогите мне в этой проблеме.

У меня есть 2 одинаковые таблицы, одна из которых является расписанием, а другая - schedule_bk. 2 таблицы имеют похожие свойства или поля. Теперь я хочу сопоставить 2 таблицы одному классу сущностей (все время).

Я уже попробовал стратегию Inheritance.TABLE_PER_CLASS, но когда я запрашивал использование из AllTimetable. ничего не возвращается.

Пожалуйста, помогите мне. Я много раз искал, но пока не получил ответа.

С наилучшими пожеланиями.

1 Ответ

3 голосов
/ 07 марта 2011

Чтобы отобразить две идентичные таблицы в один класс, вам нужно использовать свойство entity-name Hibernate или NHibernate. Документация здесь:

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

Например, для сопоставления таблиц Order to Order и OrderHistory одного класса вы создаете файл сопоставления, который отображает класс order в две таблицы с использованием новых имен сущностей, таких как:

<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.

...