映射键值的Hibernate Criteria

我的hibernate实体中有以下属性:

@ElementCollection(targetClass = String.class, fetch = FetchType.EAGER) @CollectionTable(name="FORMDATA", joinColumns = @JoinColumn(name="FORM_ID")) private Map formData; 

我想用hibernate Criteria进行查询,我希望将表单与给定的键值对匹配,如下所示:

 criteria.add(Restrictions.like("formdata.key", "%"+value+"%").ignoreCase()); 

其中’key’和’value’通过方法参数传递。

谁知道这应该如何工作? 对我来说,hibernate文档对此并不清楚。

非常感谢,B。

由于我自己也有同样的问题,我做了一些试验和错误,并提出了这个解决方案:

 Criteria attr = crit.createCriteria("formdata"); attr.add(Restrictions.and( Restrictions.eq("indices", key), Restrictions.eq("elements", "%" + value + "%") )); 

“indices”和“elements”是集合的特殊属性,可用于访问映射的key,Map的键和值。 但显然只是在该属性的子标准 – crit.add(Restrictions.eq("formdata.indices", "foo"))不起作用。

我还没有找到一种方法来查询映射集合的多个元素。 生成的SQL始终只生成集合表的单个连接。