我正在开发一个使用hibernate和drools文件对数据库表进行CRUD操作的应用程序,这时我需要提供具有特定ID的菜单,该ID目前可以进行硬编码。
我有必要的查询来使其可用,我想在休眠状态下使用它或对其进行仿真,以便调用.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文件中。 (列出它们以确保..),但是它不起作用。
根据我的情况,有没有一种方法可以执行该查询?
经过大量搜索,我仍然找不到解决我问题的方法,希望有人能帮助我。