java - 在 hibernate 中过滤计算列? (拥有)

标签 java sql mysql database hibernate

假设我有一个包含两列的表格,X 和 Y。 我想通过 hibernate 运行以下查询:

SELECT X*X + Y*Y AS Distance, POINTS.* from POINTS 
WHERE X > 0 
AND Y > 0
HAVING Distance < 50

我如何通过 hibernate 实现它?能否提供代码示例?

编辑 - This question似乎密切相关。我没有将其作为副本关闭的唯一原因是因为它提供了一个更简单的用例(没有 GROUP BY)。

最佳答案

在大多数 SQL 方言中,您不能使用“显示标签”或“AS 名称”中的名称来指代查询主体内的表达式——这让人们非常懊恼。但是,您可以在 WHERE 子句中使用表达式。

SELECT X*X + Y*Y AS DistanceSquared, POINTS.* from POINTS 
 WHERE X > 0 
   AND Y > 0
   AND (X * X + Y * Y) < 50;

HAVING 子句与聚合和聚合比较相关:

SELECT name, COUNT(*)
  FROM SomeWhere
 GROUP BY Name
HAVING COUNT(*) > 1;

HAVING 子句中的条件必须(应该)涉及至少一个“直接”聚合;条件中的另一个术语可能是常量(如图所示)或另一个直接聚合,或子查询,可能涉及“间接”聚合。 (据我所知,我为这个答案发明了“直接/间接”术语——您可能无法有效地搜索该表达式。)

关于java - 在 hibernate 中过滤计算列? (拥有),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4290850/

相关文章:

java - 即使我捕获它,也会抛出 NoSuchElementException 吗?

java - 启动过滤器 springSecurityFilterChain java.lang.NoClassDefFoundError 异常

mysql - 如何提高选择操作的执行速度

MySQL查询确定与类别A和B相关的记录

mysql - 对 mysql 查询使用多个连接

mysql - 如何根据表中选择的百分比将行值分配给不同的值

javascript - 在javascript中访问Java Map的键值对

java - 在 Scala (Play Framework) 中从具有 String 字段的 Java 枚举获取 Map[enum, String]?

python - 查找、解码并替换文本文件中的所有 Base64 值

php - 如何让 PHPMyAdmin 显示 MySQL 警告?