如何使用 QueryDSL 在 "like" 值上加 1

How to add 1 on the "like" value using QueryDSL

在我的 postgres 数据库中,我有一个单元格来保存有多少人点击了 "i like" 对应的 post。但是,我想知道我当前的解决方案是否在 postgres 中是并发的。我现在所做的是我的 dao class.

中的两个步骤

1) 获取数据库中的当前值。 2) 加1,然后更新。

如果不是,我怎样才能使它并发?我正在使用 Java (querydsl) 和 Postgres。任何人都可以帮忙吗?

更新:

感谢您的回答。我没有说清楚的一件事是我使用 querydsl。所以我不使用普通的列方式。不过还是谢谢了。

我从未使用过 PostgreSQL,但我发现了一些东西。

UPDATE tableName 
SET likes = likes + 1;

告诉我好不好,

很高兴能帮到你!

假设您的 table 被命名为 posts 并且您有一个 QPosts 查询 class,那么您可以:

QPosts p = QPosts.posts;
queryFactory.
   update(q).
   set(q.likes, q.likes.add(1)). 
   where(q.id.eq(42));

这将生成以下 SQL:

update posts
  set likes = likes + 1
where posts.id = 42