Java 在hibernate中过滤计算列?(有)

Java 在hibernate中过滤计算列?(有),java,sql,mysql,database,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 选择X*X+Y*Y作为距离,点*from点 其中X>0 Y>0 距离小于50的 如何通过hibernate实现它?你能提供一个代码示例吗 编辑-似乎有很大关系。我之所以不把这个作为一个重复关闭,唯一的原因是它提

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

SELECT X*X + Y*Y AS Distance, POINTS.* from POINTS 
WHERE X > 0 
AND Y > 0
HAVING Distance < 50
选择X*X+Y*Y作为距离,点*from点
其中X>0
Y>0
距离小于50的
如何通过hibernate实现它?你能提供一个代码示例吗


编辑-似乎有很大关系。我之所以不把这个作为一个重复关闭,唯一的原因是它提供了一个更简单的用例(没有分组依据)。

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

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

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

该语法无效。不允许在没有分组的情况下使用GROUP BYSQL@a_horse-它不在mysql中。添加标签。此外,如果需要,可以将我的查询转换为全局有效的查询。标准方法是在SELECT中使用派生表,并在外部SELECT中为列别名应用WHERE条件。
SELECT name, COUNT(*)
  FROM SomeWhere
 GROUP BY Name
HAVING COUNT(*) > 1;