Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate查询示例_Java_Hibernate_Criteria - Fatal编程技术网

Java Hibernate查询示例

Java Hibernate查询示例,java,hibernate,criteria,Java,Hibernate,Criteria,我有一个类A,它有一些基本属性,也是类型B的成员。 类型B有一个映射: //将名称映射到数字 private Map<String, Double> myMap = null; @ElementCollection(fetch=FetchType.EAGER) @MapKeyColumn(name = "NAME") @Column(name = "NUMBER") @CollectionTable(name = "NAME_MAPPING", uniqueConstraint

我有一个类A,它有一些基本属性,也是类型B的成员。 类型B有一个映射:

//将名称映射到数字

private Map<String, Double> myMap   = null;

@ElementCollection(fetch=FetchType.EAGER)
@MapKeyColumn(name = "NAME")
@Column(name = "NUMBER")
@CollectionTable(name = "NAME_MAPPING", uniqueConstraints = { @UniqueConstraint(columnNames = { "NAME", "NUMBER" }) })
public Map<String, Double> getMyMap()
{
  return this.myMap;
}
现在我想找到一个例子。我定义如下:

public List<A> findByExample(A a) 
{
  Session session = getSession();

  Criteria criteria = session.createCriteria(A.class);
  Example example = Example.create(a);
  Criteria bCriteria = criteria.createCriteria("b");
  B b = material.getB();
  bCriteria.add(Example.create(b));

  criteria = criteria.add(example);
  criteria = criteria.setFetchMode("b", FetchMode.JOIN);

  return criteria.list();   
}
公共列表查找示例(A)
{
Session=getSession();
条件=session.createCriteria(A.class);
Example=Example.create(a);
Criteria bCriteria=Criteria.createCriteria(“b”);
B=material.getB();
bCriteria.add(Example.create(b));
标准=标准。添加(示例);
criteria=criteria.setFetchMode(“b”,FetchMode.JOIN);
返回条件。list();
}
我尝试了各种变化,但没有成功。该方法返回具有相同A.name的所有DB条目,并忽略B中映射的相等性

关于我做错了什么有线索吗

谢谢,
Ronen.

示例限制忽略了关联(尽管这不是文档,但也忽略了元素集合)。即使只使用了CriteriaAPI(不使用示例),元素集合也不能是带条件的查询(se)。您必须恢复到HQL或SQL限制

public List<A> findByExample(A a) 
{
  Session session = getSession();

  Criteria criteria = session.createCriteria(A.class);
  Example example = Example.create(a);
  Criteria bCriteria = criteria.createCriteria("b");
  B b = material.getB();
  bCriteria.add(Example.create(b));

  criteria = criteria.add(example);
  criteria = criteria.setFetchMode("b", FetchMode.JOIN);

  return criteria.list();   
}