2017-04-10 15 views
2

2つのフィールドを変更するセットで名前付きクエリを作成しようとしています。以下は私が試したもので、うまくいかないものです。 ae.endTimeとsetParameterを追加するまでうまくいきました。 1つのクエリで複数のものを設定できませんか?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"、新しいDate()、TemporalType.TIMESTAMP); – ralyn

関連する問題