带有 COUNT 的 HQL 更新列

HQL update column with COUNT

我正在使用 Hibernate 和 HQL,链接到 PostgreSQL 数据库。
我有一个 table users 和一个 table teams 通过 table teams_usersManyToMany 条件链接。
我想 更新select table team 所以 属性 usersCount 取属于一个团队的用户数量。

我不想添加一个@Formula到我的实体Class,因为我不想它被执行所有次,这对于我不需要计数的大 JOIN FETCH 查询来说太浪费了。


换句话说,我想找到与以下 PSQL 查询等效的 HQL

UPDATE teams t 
SET users_count = (SELECT COUNT(ut.*)
    FROM teams t1 
    LEFT JOIN teams_users tu 
        ON t1.id = tu.team_id 
    WHERE t1.id = t.id 
    GROUP BY t1.id);

等同于以下内容

SELECT t.*, count(tu.*) AS users_count 
FROM teams t 
LEFT JOIN teams_users tu 
    ON t.id = tu.team_id 
GROUP BY t.id;

不成功的尝试(得到一个想法)

UPDATE Team t SET
    t.usersCount = COUNT(t.users)
UPDATE Team t SET
    t.usersCount = (SELECT COUNT(t1.users) FROM Team t1 WHERE t1.id = t.id)
SELECT t, count(t.users) AS t.usersCount
FROM Team t

我找到了 UPDATE 查询的解决方案。
简直就是

UPDATE Team t 
SET t.usersCount = (SELECT COUNT(u) from t.users u)

它在 table users 上进行了额外的连接,而 table teams_users 就足够了,但是很好......它有效。

如果有人有 SELECT 的解决方案,我仍然很好奇!