sql - JPQL:当数据库中不存在对象时切换/案例
问题描述
我正在@Query
为存储库方法编写一个。此查询应返回Movie
平均值Rating
小于给定参数值的所有值:
@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);
问题是我有一个要求,当 aMovie
没有评级时,它应该被解释为平均评级等于0
。
我有一个线索,我应该switch/case
与 结合使用when
,但目前我不知道该怎么做。
这甚至可以在一个查询中实现吗?
解决方案
您可以尝试使用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);
推荐阅读
- javascript - 从 Promise react native 中获取价值并结合到 Axios 标头
- python - 使用 django-email-verification 和 celery 发送电子邮件验证链接
- python - 如何处理通过django中的表单传递的空输入?
- python - Python 3.8 printing variable name and value
- r - 相关分类和连续数据的模拟
- linux - 在 Linux 上加载 OpenGL 函数 - GL_GLEXT_PROTOTYPES 与 glXGetProcAddress
- solr - Solr json.facet 术语类型不适用于多值字符串字段
- javascript - 如何反转动态变量
- javascript - Javascript charCodeAt 和 fromCharCode 不返回相同的值
- ios - 如何从 iPhone 麦克风返回当前分贝级别