Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate(HQL)-如何从多对多表中查找唯一查询?_Hibernate_Hql - Fatal编程技术网

Hibernate(HQL)-如何从多对多表中查找唯一查询?

Hibernate(HQL)-如何从多对多表中查找唯一查询?,hibernate,hql,Hibernate,Hql,但实际上它会找到这个菜单 我怎么做 问题2: 我想找到其项目的ItemID同时为1和2的菜单。 我尝试这样做hql: 选择菜单 从“菜单”菜单中的Inmenu.items项 其中items.itemId位于1,2中 但实际上,它会发现菜单的itemIds是1或2,而不是1和2。 我怎么做 谢谢。如果可以接受,我建议您对此使用条件查询。以下是代码片段 select menu from Menu menu, In(menu.items) items where items.itemId not

但实际上它会找到这个菜单

我怎么做

问题2: 我想找到其项目的ItemID同时为1和2的菜单。 我尝试这样做hql:

选择菜单 从“菜单”菜单中的Inmenu.items项 其中items.itemId位于1,2中

但实际上,它会发现菜单的itemIds是1或2,而不是1和2。 我怎么做


谢谢。

如果可以接受,我建议您对此使用条件查询。以下是代码片段

select menu 
from Menu menu, In(menu.items) items 
where items.itemId not in (1,2)
这将为您提供ItemId不等于1和2的所有菜单

对其他问题也使用类似的查询。希望这对您有所帮助。 顺便说一句,我还没有测试过这个解决方案。

我自己发现的 1.from Menu Menu,其中2=在1,2中的Menu.itemsitems where items.items id中,从菜单菜单中选择countmenu.id
2.从menu2菜单中选择menu2,其中3=从Menu菜单中选择countmenu.id,在Menu.items项目中,在1,2,3和Menu.MENUD中选择items.itemId。MENUD=menu2.MENUD

项目id在表中是否唯一?是否有任何错误或给出的结果无效?顺便说一句,如果它给出了无效的结果,你能把它生成的SQL发布给我吗?如果出现错误,则返回错误消息
<class name="Menu" table="menu">
    <id name="menuId" type="java.lang.Integer" column="menuId">
        <generator class="increment"></generator>
    </id>
    <property name="name" type="string" column="menuName" length="100"></property>
    <set access="property" lazy="true" inverse="false" cascade="save-update"
        name="items" batch-size="10" fetch="select" table="menu_item">
        <key column="menuId" />
        <many-to-many class="Item" column="itemId" />
    </set>
<class name="Item" table="item">
    <id name="itemId" type="java.lang.Integer" column="itemId">
        <generator class="increment"></generator>
    </id>
    <property name="name" type="string" column="itemName" length="100"></property>
    <set access="property" lazy="true" inverse="false" cascade="save-update"
        name="menus" batch-size="10" fetch="select" table="menu_item">
        <key column="itemId" />
        <many-to-many class="Menu" column="menuId" />
    </set>
</class>
select menu 
from Menu menu, In(menu.items) items 
where items.itemId not in (1,2)
DetachedCriteria dc = DetachedCriteria.forClass(Menu.class);
List<Menu> list = new ArrayList<Menu>();
dc.createAlias("items","item");
dc.add(Restrictions.and(
     Restrictions.ne("item.itemId",1),
               Restrictions.ne("item.itemId",2)));
list = hibernateTemplate.findByCriteria(dc);