JPQL:当数据库中不存在对象时切换/案例
Posted
技术标签:
【中文标题】JPQL:当数据库中不存在对象时切换/案例【英文标题】:JPQL: Switch/case when an object does not exist on the database 【发布时间】:2021-09-08 20:33:16 【问题描述】:我正在为存储库方法编写@Query
。此查询应返回所有平均 Rating
小于给定参数值的 Movie
:
@Query(value =
"select m from Movie m " +
"where (select avg(r.rating) from Review r " +
"where m.id = r.movie.id) < :rating")
List<Movie> findMoviesWithAverageRatingLowerThan(@Param("rating") Double rating);
问题是我有一个要求,当Movie
没有评分时,它应该被解释为等于0
的平均评分。
我知道我应该使用switch/case
和when
结合使用,但目前我不知道该怎么做。
这甚至可以在一个查询中实现吗?
【问题讨论】:
【参考方案1】:您可以尝试使用COALESCE 表达式,如下所示:
@Query(value =
"select m from Movie m " +
"where (select avg(COALESCE(r.rating, 0)) from Review r " +
"where m.id = r.movie.id) < :rating")
List<Movie> findMoviesWithAverageRatingLowerThan(@Param("rating") Double rating);
【讨论】:
以上是关于JPQL:当数据库中不存在对象时切换/案例的主要内容,如果未能解决你的问题,请参考以下文章
当数据中不存在分组变量的所有级别时,绘图之间的颜色比例和图例一致