JPA查询中是否可以使用以下SQL?我试过,但实际的SQL休眠运行似乎没有。
这是我想写为JPA查询的SQL;
UPDATE movie m SET average_rating = COALESCE((SELECT AVG(stars) FROM rating r WHERE r.movie_id = m.id), 0);
这是JPA查询;
@Query("UPDATE Movie m SET m.averageRating = COALESCE((SELECT AVG(r.stars) FROM Rating r WHERE r.movie = m), 0)")
hibernate说的是什么;
Hibernate:
insert
into
HT_Movie
select
movie0_.id as id
from
Movie movie0_
Hibernate:
update
Movie
set
average_rating=coalesce((select
avg(rating1_.stars)
from
Rating rating1_
where
rating1_.movie_id=id),
0)
where
(
id
) IN (
select
id
from
HT_Movie
)
所以hibernate似乎还有一个额外的地方。
答案 0 :(得分:0)
@Query("UPDATE Movie m SET m.averageRating = COALESCE((SELECT AVG(r.stars) FROM Rating r WHERE r.movie = m), 0)")
这是100%正确。 并且 hibernate 也能正常工作。 Hibernate 以这种方式工作:
HT_Movie
并插入电影表的ID。HT_Movie
中的抽象ID,以便在更新处理中强制执行更快的速度这不是新的 hibernate 总是编造查询。