2016-08-10 9 views
0
getSession() 
      .createQuery(
        "UPDATE Friend SET status = :status, actionUserId = :userId, lastModifyDate = :lastModifyDate WHERE userId = :userId AND friendId = :idUserFriend") 
      .setParameter("status", Integer.valueOf(InviteFriendState.CANCEL.getState())) 
      .setParameter("userId", userId).setParameter("idUserFriend", idUserFriend) 
      .setParameter("lastModifyDate", new Date()).executeUpdate(); 
}getSession() 
      .createQuery(
        "UPDATE Friend SET status = :status, actionUserId = :userId, lastModifyDate = :lastModifyDate WHERE userId = :idUserFriend AND friendId = :userId ") 
      .setParameter("status", Integer.valueOf(InviteFriendState.CANCEL.getState())) 
      .setParameter("userId", userId).setParameter("idUserFriend", idUserFriend) 
      .setParameter("lastModifyDate", new Date()).executeUpdate(); 
}` 

どのようにHibernateで1つのリクエストを送信するのですか? (HQL)Hibernateで1つのリクエストを送信するには? (HQL)

リクエストを結合するにはどうすればよいですか?

答えて

0

なぜ2つのリクエストを行うのですか?
あなたはOR条件を追加することにより、単一のクエリで同じことを行うことができます

getSession() 
      .createQuery(
        "UPDATE Friend SET status = :status, actionUserId = :userId, lastModifyDate = :lastModifyDate 
       WHERE (userId = :userId AND friendId = :idUserFriend) 
       || (userId = :idUserFriend AND friendId = :userId) ") 
      .setParameter("status", Integer.valueOf(InviteFriendState.CANCEL.getState())) 
      .setParameter("userId", userId).setParameter("idUserFriend", idUserFriend) 
      .setParameter("lastModifyDate", new Date()).executeUpdate(); 
} 
+0

、彼らがしている場合には、ユーザーが複数の 'UPDATE'文を発行することができる一方で、Hibernateはおそらくバッチこれらのことを理解することも重要です同じトランザクション内で発行されるため、技術的には同じトランザクションのコンテキスト内でデータベースにプッシュされているため、それらは無関係に原子的に発生します。 – Naros

+0

もちろん、1つのリクエストでジョブを実行できるので、そうではありません。単純な問題に対処するための複雑な答えを与えることは有用ではありません。 – davidxxx

関連する問題