2017-04-10 72 views
2

我想创建一个具有更改2个字段的集合的名称查询。以下是我尝试过的,这不起作用。它工作正常,直到我添加ae.endTime和setParameter。你不能在一个查询中设置多个东西吗?JPA命名查询集

@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(); 

回答

0

取决于您如何映射您endTime场,你应该使用setParameter方法,其中添加的日期时间信息的过载变化。例如:

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

这里更多关于Temporal Types

+0

我不得不删除getTime(),因为那是返回一个int并且与TemporalType不匹配。我结束了使用以下,它做我需要的。 updateAttempts.setParameter(“now”,new Date(),TemporalType.TIMESTAMP); – ralyn