如何在Criteria Query中使用MAP键?

kan*_*arp 8 hibernate criteria-api hibernate-criteria

我有这样的Bean

Class TestA
{
    Map<String,TestB> testBMap;
}

Class TestB
{
    String data;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想取TestA随着地图数据的testBMap地方key ='test1'.

我怎么能用Hibernate做到这一点.

JB *_*zet 4

键必须是 TestB 的持久字段之一的值(假设该字段的名称为“foo”),因此此代码应该有效:

Criteria criteria = session.createCriteria(TestA.class, "a");
criteria.createAlias("a.testBMap", "b");
criteria.add(Restrictions.eq("b.foo", "test1"));
criteria.setFetchMode("a.testBMap", FetchMode.JOIN);
return criteria.list();
Run Code Online (Sandbox Code Playgroud)

  • 我认为这给出了例外:“org.hibernate.MappingException:集合不是关联” (3认同)