createQuery()の後にHibernate(HQL)のlist()を使用すると、キャストList<Object[]>
をList<POJO class>
に直接入力します。私は実際のシナリオをここで説明します。私は3つの平易な古いJavaオブジェクトにPerson、Operation、Projectと言い、TableはPerson、Operation、Projectへの外部参照とのトランザクションを表します。Hibernate HQL createQuery()list()型を直接モデルにキャスト
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クエリ言語のクエリは 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();
それは、オブジェクトが[] POP_Modelに変換することはできませんと言って型キャストエラーが発生します。私はTypedQueryをチェックアウトしましたが、そのための例はありませんでした。しかし、私が知る限り、TypedQueryを使用してモデルではなくPOJOにマップすることができます。モデルにキャストを直接入力したい
問題をよりよく解決する方法の1つは、基準APIに切り替えることです。 –
「基準Api」は?そのリンクを参照することはできますか? – Misha