public class Menu {
private int menuId;
private String name;
private Set<Item> items=new HashSet<Item>();
}
public class Item {
private int itemId;
private String name;
private Set<Menu> menus=new HashSet<Menu>();
}
xml меню:
<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>
xml элемента:
<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>
question1: Я хотел бы найти меню, чьи itemIds itemIdsне 1 или 2. Например, itemIds пунктов одного меню - 1,3,4.Я пытаюсь сделать hql следующим образом:
select menu
from Menu menu, In(menu.items) items
where items.itemId not in (1,2)
Но на самом деле он найдет это меню.
Как я могу это сделать?
question2: Я хотел бы найтименю, чьи itemIds элемента равны 1 и 2 одновременно.Я пытаюсь сделать hql следующим образом:
выбрать меню из меню меню, в (menu.items) элементы, где items.itemId в (1,2)
но на самом деле он найдет менючьи itemIds 1 или 2, а не 1 и 2. Как я могу это сделать?
Спасибо.