hibernate HQL createQuery () () type de fonte de modéliser directement

Lorsque j'utilise list() de mise en veille prolongée (HQL) après createQuery(), alors je veux taper directement en fonte List<Object[]> à mon List<POJO class>. Je décris mon scénario ici. J'ai 3 Plain Old Java Objects dire Personne, de l'Exploitation et de Projet et d'une table-dire des Transactions avec l'étranger références à la Personne , de l'Exploitation et de Projet.

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
}

Maintenant, je veux exécuter une Requête hql Langage de requête dire
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".

J'ai créé une classe de Modèle pour la sortie de cette requête dire POP_Model.

private class POP_Model {
  String person_name;
  String operation_name;
  String project_name;
}

Maintenant, je veux utiliser Hibernate query:

Session session=HibernateConnection.getSessionFactory().openSession();
Query q=session.createQuery(query);
List<POP_Model> list=(List<POP_Model>)q.list();

Il donne transtypage d'erreur disant Object[] ne peut pas être convertie POP_Model. J'ai vérifié TypedQuery mais n'a pas obtenu un exemple pour elle. Mais autant que je sache, TypedQuery peut être utilisé pour la carte de POJO pas de Modèle. Je veux directement le type de fonte de Modèle.

L'une des approches pour mieux résoudre le problème est de passer à l'API criteria.
"Les critères d'Api"? pouvez-vous consulter un lien pour cela.

OriginalL'auteur Misha | 2013-03-11