我是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。
作业对象是一对多关系,试图过滤作业对象
答案 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();