java-映射键值的休眠条件

我的休眠实体中具有以下属性:

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

我想使用休眠条件进行查询,在该条件下我想将具有给定键值对的表单匹配,如下所示:

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

其中“键”和“值”通过方法参数传递.

有人知道这应该如何工作吗?对我来说,休眠文档尚不清楚.

非常感谢,
B.

解决方法:

由于我自己也有同样的问题,因此我进行了一些反复试验,并提出了以下解决方案:

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

“索引”和“元素”是集合的特殊属性,可用于访问已映射的地图的键和值.但是显然只有在该属性的子条件下,crit.add(Restrictions.eq(“ formdata.indices”,“ foo”))才起作用.

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

上一篇:java-使用Hibernate Criteria和Oracle更好地与时间打交道?


下一篇:Java-有关Hibernate API中的Criteria.createCriteria的问题