引用JPQL,我不清楚如何查询表。
我想要的是,如果存在,给定的 messagId 和组的@Entity Note
,但我不明白语法。
如何为以下查询指定消息 ID 和组?
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 nn" + o);
}
}
}
使用 setParameter(字符串名称、对象值)
q.setParameter("messageId", id).setParameter("group", group);
若要使其更好,请使用类型化查询
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 nn" + o);
}
}
您需要使用 setParameter() 在查询上设置参数。
看http://en.wikibooks.org/wiki/Java_Persistence/Querying#Parameters