2012-05-07 1 views
0

J'ai un objet JPA:Pourquoi cette requête JPA ne renvoie-t-elle pas une liste de ma classe spécifique?

@Entity 
@Table(name="WF_GROUP") 
public class Group { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private long id; 
    private String groupName; 
    private long parentId; 

/* ... */ 

} 

J'ai un GroupDAO avec cette méthode:

public List<Group> getAllGroups() { 
    List<Group> groups = new ArrayList<Group>(); 
    String query = "select * from WF_GROUP"; 
    Query q = getEntityManager().createNativeQuery(query); 
    groups.addAll(q.getResultList()); 
    return groups; 
} 

Le problème est le q.getResultList() retourne une liste de résultat de type objet que contient un objet tableau pour chaque propriété.

Pourquoi q.getResultList() ne renvoie-t-il pas une liste d'objets Group?

Merci! Rob

Répondre

3

Parce que vous ne spécifiez pas quelle classe la requête native doit renvoyer. Jetez un oeil à l'autre createNativeQuery méthodes, en prenant des arguments supplémentaires. Notez que l'utilisation de JPA consiste à utiliser des objets plutôt que des tables de base de données. JPQL est là pour ça. Vous devez utiliser le code suivant:

String query = "select group from Group group"; // this is JPQL 
TypedQuery<Group> q = getEntityManager().createQuery(query, Group.class); 
groups.addAll(q.getResultList()); 
Questions connexes