简体   繁体   English

如何在Hibernate中发送所有一个请求? (HQL)

[英]How to send it all one request in Hibernate ? (HQL)

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();
}`

How to send it all one request in Hibernate ? 如何在Hibernate中发送所有一个请求? (HQL) (HQL)

How to combine a request? 如何合并一个请求?

Why doing two requests ? 为什么要执行两个请求?
You can do the same thing with a single query by adding an OR condition : 您可以通过添加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();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM