嗨,我是JPA的新手,我想知道如何处理以下场景
我需要在数据库中维护收到的消息总数,不需要存储消息,只需要存储消息.Im表示一个名为MessageCount的实体的计数,其变量计数如下
@Entity
public class MessageCount
{
long count;
...
每当我收到消息时,我都需要更新计数。
我如何更新? 处理这个问题的正确方法是什么?
先谢谢。
答案 0 :(得分:2)
可靠地(读取:原子地)这样做的唯一方法是发出直接查询(而不是获取实体并递增它)。相应的JPA查询将是:
UPDATE MessageCount SET count = count + 1
如果您使用JPA获取实体,请添加1,然后再次保存 - 您可能会覆盖另一个线程已增加并保存的值。在单个查询中执行操作可确保它在单个原子事务中发生。