Отображение Hibernate - запрос нескольких таблиц - PullRequest
0 голосов
/ 27 июня 2018

Я работаю над приложением, которое использует hibernate и сносит файлы для выполнения операций CRUD над таблицами базы данных, и на данный момент мне нужно предоставить меню с определенным идентификатором, который на данный момент может быть жестко закодирован.

У меня есть необходимый запрос, чтобы сделать его доступным, и я хотел использовать его или эмулировать в спящем режиме, чтобы вызвать .hbm и вывести результат этого запроса. Учитывая, что у меня нет доступа к файлам .java, и поэтому я могу создавать только файлы .hbm и .xml, которые мне нужно вывести.

Я могу перечислить все таблицы, необходимые в моем приложении для выполнения этого запроса. Возникает вопрос: как использовать все эти модели (файлы отображения гибернации, которые делают каждую из этих таблиц доступными) для создания одного файла .hbm, который их вызывает и где я могу эмулировать запрос, который мне нужен?

Запрос выглядит следующим образом:

select distinct d.* from Group MB, Access AI, Item I, Module M, MenuItem D
where
mb.IdGroup = AI.IdGroup and ai.CodItem = i.CodItem and i.Module = m.Module and 
mb.CodSis = ai.CodSis and ai.CodSis = i.CodSis and i.CodSis = m.CodSis and
m.CodSis = 103 and mb.IdUtil= 29 
and
d.Coditem = i.CodItem
and
d.parentMenuID = 0

Модели hbm для перечисления каждой таблицы выглядят примерно так: (пример для отображения таблицы меню)

Menu.hbm.xml

<hibernate-mapping>
    <class name="authorization.model.Menu" table="MenuItem" where="ParentMenuID = 0 ">  
      <composite-id>
      <key-property column="Id" name="id" type="int"/>
      </composite-id>
      <property column="label" name="__label" type="string"/>
    <property column="actionURL" name="__actionURL" type="string"/>
    <property column="ParentMenuID" name="__ParentMenuID" type="string"/>
    <property column="MenuID" name="__MenuID" type="int"/>
    <property column="Coditem" name="__Coditem" type="int"/>
  </class>
</hibernate-mapping>

menu.xml

<?xml version="1.0" encoding="utf-8" ?>
<concept name="menu">
  <action name="readlist" jsonMetainfo="{
          'columns':[
              {'key':'__ParentMenuID', 'order':1, 'allowSort':false, 'type':'text', 'exportable':true},
              {'key':'__Coditem', 'order':2, 'allowSort':false, 'type':'text', 'exportable':true},
              {'key':'__label', 'order':3, 'allowSort':false, 'type':'text', 'exportable':true},
          ],
          'defaultSort':{'column':2, 'type':'asc'},
          'actions':[]
      }" />
</concept>

С этим я могу перечислить таблицу меню без какого-либо фильтра, только таблица. Мне нужно эмулировать запрос выше, я пытался использовать <many-to-one name="Item" class="authorization.model.Item" insert="false" update="false" not-found="ignore"/><many-to-one> для всех моделей (которые содержат таблицы), которые мне нужны, просто чтобы перечислить их и убедиться, что у меня есть все нужные мне таблицы в одном файле .hbm (список их, чтобы убедиться ..) но это не работает .. Есть ли способ выполнить этот запрос в моей ситуации?

После долгих поисков я все еще не могу найти решение своей проблемы, надеюсь, кто-нибудь мне поможет, пожалуйста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...