【发布时间】:2013-02-26 16:24:38
【问题描述】:
当我在 createQuery() 之后使用 Hibernate (HQL) 的 list() 时,我想直接键入 cast List<Object[]> 到我的 List<POJO class>。我在这里描述我的实际情况。我有 3 个普通的旧 Java 对象说 Person、Operation 和 Project,还有一个表说 Transaction,其中包含对 Person、Operation 和 Project 的外部引用。
class Person {
String name;
// getters and setters
}
class Operation {
String name;
// getters and setters
}
class Project {
String name;
// getters and setters
}
class Transaction {
String p_id;
String o_id;
String project_id;
// refers to id of All three table above
}
现在,我想执行一个 Hibernate Query Language 查询说
String query="select p.name, o.name, project.name from Person p , Operation o, Project project , Transaction t where p.id=2 and p.id=t.p_id and o.id=t.o_id and project.id=t.project_id"。
我为这个查询的输出创建了一个模型类,比如 POP_Model。
private class POP_Model {
String person_name;
String operation_name;
String project_name;
}
现在,我想使用 Hibernate 查询:
Session session=HibernateConnection.getSessionFactory().openSession();
Query q=session.createQuery(query);
List<POP_Model> list=(List<POP_Model>)q.list();
它给出类型转换错误,说 Object[] 无法转换为 POP_Model。我检查了 TypedQuery 但没有得到它的示例。但据我所知,TypedQuery 可以用来映射到 POJO 而不是 Model。我想直接将类型转换为 Model。
【问题讨论】:
-
更好地解决问题的方法之一是切换到条件 API。
-
“Criteria Api”是什么意思?你能引用它的任何链接吗?
标签: hibernate model-view-controller struts2