Java 列表的休眠条件

Java 列表的休眠条件,java,hibernate,criteria,contains,Java,Hibernate,Criteria,Contains,你好 我有一个Hibernate映射,看起来像这样: public class Item implements Serializable { private lond id; private String Name; private boolean status; ... } public class ItemHolder implements Serializable { private long id; priva

你好

我有一个Hibernate映射,看起来像这样:

public class Item implements Serializable {
      private lond id;
      private String Name;
      private boolean status;
      ...

}

public class ItemHolder  implements Serializable {
      private long id;
      private List<Item> items;
      ...
}
公共类项实现可序列化{
私人lond id;
私有字符串名称;
私有布尔状态;
...
}
公共类ItemHolder实现了可序列化{
私人长id;
私人清单项目;
...
}
如何进行查询以获取包含我的物品的所有物品持有者的密码? (使用条件)

您只需要加入:

Criteria c = session.createCriteria(ItemHolder.class, "itemHolder");
c.createAlias("itemHolder.items", "item");
c.add(Restrictions.eq("item.id", theItemId);

查询可能类似于:

Item loadedItem = ...;
Query query = session.createQuery("from ItemHolder ih where :item in elements(ih.items)");
query.setParameter("item", loadedItem);
List list = query.list();

您可以使用您的要求进行限制:id或名称..

这是可以的,但如果项目条件匹配多次,则可以回答重复的项目持有者。例如--如果按通配符名称搜索项。
Criteria criteria=session.createCriteria(ItemHolder.class);
criteria.createAlias("items", "item"); 
criteria.add(Restrictions.eq("item.Name", "my Item").ignoreCase());