createQuery() の後に Hibernate (HQL) の list() を使用する場合List<Object[]>
、 my List<POJO class>
. ここで実際のシナリオについて説明します。Person、Operation、および Project という 3 つの Plain Old Java オブジェクトと、Person、Operation、および Project への外部参照を含む Transaction というテーブルがあります。
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 という 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 に変換できないという typecast エラーが発生します。TypedQuery を調べましたが、その例はありませんでした。しかし、私が知る限り、TypedQuery は Model ではなく POJO にマップするために使用できます。モデルにキャストを直接入力したい。