java.lang.ClassCastException:org.hibernate.impl.CriteriaImpl无法强制转换

时间:2016-03-24 14:17:02

标签: hibernate hibernate-criteria

我是Hibernate Criteria的新手,我发现很多使用list的例子。 喜欢知道如何将标准对象转换为Employee对象。 Hibernate Criteria是否有可能返回一个类实体。

Employee emp=  (Employee) session.createCriteria(Employee.class,"a")
.createAlias("a.jobs", "j") 
.add(Restrictions.eq("id", id))
.add(Restrictions.eq("j.active", "1"));

java.lang.ClassCastException:org.hibernate.impl.CriteriaImpl无法强制转换为Employee。

作业对象是一对多关系,试图过滤作业对象

2 个答案:

答案 0 :(得分:1)

您需要使用list()方法

List<Employee> result =  (List<Employee>) session.createCriteria(Employee.class,"a")
.createAlias("a.jobs", "j") 
.add(Restrictions.eq("id", id))
.add(Restrictions.eq("j.active", "1")).list();

uniqueResult(),但如果有多条记录,则会有例外情况。如果没有任何结果uniqueResult()将返回null

Employee result = (Employee) session.createCriteria(Employee.class,"a")
.createAlias("a.jobs", "j") 
.add(Restrictions.eq("id", id))
.add(Restrictions.eq("j.active", "1")).uniqueResult();

答案 1 :(得分:0)

如果有多条记录,但您希望在不使用列表的情况下将单个唯一结果强制转换为模型类,那么您还可以使用以下内容:

Employee emp=  (Employee) session.createCriteria(Employee.class,"a")
.createAlias("a.jobs", "j") 
.add(Restrictions.eq("id", id))
.add(Restrictions.eq("j.active", "1")).setMaxResults(1).uniqueResult();