3

我想知道如何使用 JPA(toplink Essentials)从服务器到客户端处理实体类中的乐观锁版本属性,反之亦然。

这是场景。

  1. 从浏览器用户向服务器发送请求,要求编辑个人用户信息。

  2. 服务器处理请求并将结果返回给浏览器。服务器代码如下所示:

    EntityManager em = EmProvider.getInstance().getEntityManagerFactory().createEntityManager();

    用户 u = (User)em.find(User.class, myUserId);

    返回你;//响应浏览器

在这里,我的困惑是用户表"version"optimistic locking.

这意味着即使客户端(我或任何人)永远不会使用它,版本字段的值也会被发送回客户端。版本字段将在服务器端代码中使用。

那么将版本号发送给客户端是否正确?因为否则我无法弄清楚如何检查版本号,以防用户点击修改数据的网页上的“更新”按钮。

如果您需要更多说明,请告诉我。

4

1 回答 1

5

是的,您可以将版本号发送给客户端,以便他稍后可以将其发送回服务器(连同他想要对实体进行的更改),服务器可以使用它来检查冲突更新。

服务器如何知道要检查哪个版本?(也可以将数字放在服务器端会话中,但这基本上是同一主题的变体)。关键是,当您“签出”要编辑的版本时,您会携带该时间点的版本号。

这意味着即使客户端(我或任何人)永远不会使用它,版本字段的值也会被发送回客户端。

好吧,您可以在客户端上使用它。例如,如果编辑操作需要很长时间,如果实体同时更新,客户端可以不时轮询一次,然后提醒用户。(类似于 Stackoverflow 上的“已发布新答案”消息)。

于 2011-01-05T02:15:26.170 回答