2012-05-10 4 views
0

En référençant JPQL, il n'est pas clair pour moi exactement comment interroger une table. Ce que je veux, c'est si c'est le @Entity Note pour un messagId et un groupe donnés, mais je ne comprends pas la syntaxe.Syntaxe pour interroger deux champs dans une table avec JPA

Comment est-ce que je spécifie le messageId et le groupe pour la requête ci-dessous?

public void persist(Msg message) { 
    LOG.info("\t" + message); 
    LOG.info("isOpen?" + em.isOpen()); 
    em.getTransaction().begin(); 
    int id = message.getId(); 
    Query q = em.createQuery("SELECT n " 
      + "FROM Notes n WHERE n.messageId = :messageId " 
      + "AND n.group = :group"); 
    List results = q.getResultList(); 
    em.getTransaction().commit(); 
    for (Object o : results) { 
     LOG.info("object is \n\n" + o); 
    } 
} 

}

+1

ensemble: messageId et: paramètres de groupe, avant d'utiliser q.getResultList() utiliser q.setParameter ("messageId", ) q.setParameter ("group", ); – anfy2002us

Répondre

1

Utilisez setParameter(String name, Object value)

q.setParameter("messageId", id).setParameter("group", group); 

Pour faire mieux, utiliser TypedQuery

public void persist(Msg message) { 
    LOG.info("\t" + message); 
    LOG.info("isOpen?" + em.isOpen()); 
    em.getTransaction().begin(); 
    int id = message.getId(); 
    TypedQuery<Note> q = em.createQuery("SELECT n " 
      + "FROM Notes n WHERE n.messageId = :messageId " 
      + "AND n.group = :group", Note.class); 
    q.setParameter("messageId", id).setParameter("group", group); 
    List<Note> results = q.getResultList(); 
    em.getTransaction().commit(); 
    for (Note o : results) { 
     LOG.info("object is \n\n" + o); 
    } 
} 
+0

oooh, génériques :) – Thufir

Questions connexes