2012-05-10 13 views
0

JPQLを参照すると、テーブルを照会する方法がわかりません。JPAでテーブル内の2つのフィールドを照会する構文

私が望むのは、もし存在すれば、与えられたmessagIdとグループに対して@Entity Noteですが、私はその構文を理解していません。

以下のクエリのmessageIdとgroupを指定する方法を教えてください。

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

セットを使用するようにするにはq.setParameter( "messageId"、); q.setParameter( "group"、); – anfy2002us

答えて

1

使用setParameter(String name, Object value)

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

は、それがより良い、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、generics :) – Thufir

関連する問題