使用 JPA 查询表中两个字段的语法



引用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

最新更新