我正在尝试创建一个namedquery,它的集合可以更改2个字段。下面是我试过的,但没用。在我添加了ae.endtime和setparameter之前,它工作得很好。不能在一个查询中设置多个内容吗?

@NamedQuery(name = AttEnt.JQL.MARK_INCOMPLETE,
            query = "UPDATE AttEnt ae"
                     + " SET ae.result ="
                     + " Result.INCOMPLETE,"
                     + " ae.endTime = :now"
                     + " WHERE ae.result IS NULL")

下面是我调用查询的地方。
   final EntityManager em = emf.createEntityManager();

    // Mark things with no result as incomplete and endTime to current time
    em.getTransaction().begin();
    final Query upAtt = em.createNamedQuery(
            AttEnt.JQL.MARK_INCOMPLETE);
    updateAttempts.setParameter("now", (new Date()).getTime());
    upAtt.executeUpdate();
    em.getTransaction().commit();

最佳答案

根据您映射endTime字段的方式,您应该使用setParameter方法的重载变体,该方法添加日期时间信息。例如:

updateAttempts.setParameter("now", (new Date()).getTime(), TemporalType.TIME);

这里有关于Temporal Types的更多信息。

关于linux - JPA命名查询集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43327985/

10-11 15:33