Отображение Hibernate с несколькими таблицами и собственным SQL
У меня есть некоторые сомнения относительно того, как сделать файл hbm.xml для отображения в Hibernate. Проблема возникает при отображении объекта Java, который имеет поля в нескольких таблицах.
Используемая нами пользовательская среда требует наличия файла hbm.xml для каждого объекта, но в этом случае его поля находятся в трех таблицах, поэтому я хочу сделать собственный запрос SQL (еще одно требование сверху) и переместить значения полей в результат для нового объекта, описанного в файле отображения Hibernate.
Мой файл отображения hibernate выглядит примерно так:
<hibernate-mapping>
<class name="com.mycompany.myproject.model.scommons.companhiaalmacen.CompanhiaAlmacen" table="COMPANHIA_ALMACEN">
<id name="companyWarehouseId" type="java.lang.Integer" access="field">
<column name="ID_EMPRESA_NAVE" />
<generator class="assigned" />
</id>
<property name="companyId" type="java.lang.Integer">
<column name="ID_EMPRESA" />
</property>
<property name="warehouseDCId" type="java.lang.Integer">
<column name="ID_CENTRO_DISTRIBUCION_NAVE" />
</property>
<!-- HERE: This attribute NOMBRE_COMERCIAL belongs not only to another table (EMPRESA) -->
<!-- but also to another schema (GENERAL) as well -->
<property name="name" type="java.lang.String">
<column name="NOMBRE_COMERCIAL" />
</property>
<property name="creationDate" type="java.util.Date">
<column name="FECHA_ALTA" />
</property>
<property name="creationUser" type="java.lang.String">
<column name="USUARIO_ALTA" />
</property>
</class>
</hibernate-mapping>
Я не знаю, как сделать это без создания oneToMany или ManyToOne. Я не хочу, чтобы Hibernate извлекал объект и его сопоставленные сущности, потому что я хочу получить это из моего собственного запроса db2.
Кто-нибудь знает, как это сделать или где я могу это найти, пожалуйста? (Я уже искал SQLQuery в Hibernate API, это просто отображение, которое я не получаю).
Заранее спасибо.
1 ответ
Вы можете переопределить любой оператор CRUD, как требуется в Hibernate. См. Разделы 18.3 и 18.4 ниже:
http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/querysql.html
Также возможно сопоставить сущность нескольким таблицам и иметь таблицы в нескольких схемах через атрибут схемы определения таблицы, так что это может быть лучшим подходом.
Смотрите раздел 2.2.7 ниже:
http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/
и следующая показывающая вторичная таблица может быть в другой схеме:
http://docs.oracle.com/javaee/5/api/javax/persistence/SecondaryTable.html
Для этих аннотаций будут XML-эквиваленты.