Sql 在Hibernate中组合NamedQuery和条件

Sql 在Hibernate中组合NamedQuery和条件,sql,hibernate,named-query,hibernate-criteria,haversine,Sql,Hibernate,Named Query,Hibernate Criteria,Haversine,我在storefinder应用程序中使用Hibernate。 对于SQL中的近似搜索,我使用haversine公式。因为这是一个有点混乱的SQL,所以我在.hbm.xml文件中为此创建了一个命名SQL查询 SELECT location.*, ( 3959 * acos( cos( radians(7.4481481) ) * cos( radians( X(location.coordinates) ) ) * cos( radians( Y(loca

我在storefinder应用程序中使用Hibernate。 对于SQL中的近似搜索,我使用haversine公式。因为这是一个有点混乱的SQL,所以我在.hbm.xml文件中为此创建了一个命名SQL查询

SELECT
    location.*,
    ( 3959 * acos( cos( radians(7.4481481) ) * 
      cos( radians( X(location.coordinates) ) ) *
      cos( radians( Y(location.coordinates) ) - radians(46.9479986) ) +
      sin( radians(7.4481481) ) * sin( radians( X(location.coordinates) ) ) ) )
    AS distance     
FROM
    location        
WHERE
    location.coordinates IS NOT NULL
HAVING
    distance < :radius
ORDER BY
    distance ASC
LIMIT :max
选择
地点。*,
(3959*acos(弧度(7.4481481))*
cos(弧度(X(位置坐标)))*
cos(弧度(Y(位置坐标))-弧度(46.9479986))+
sin(弧度(7.4481481))*sin(弧度(X(位置坐标)))
作为距离
从…起
位置
哪里
location.coordinates不为空
有
距离<:半径
订购人
距离ASC
限制:最大
但我也有一个用户定义的过滤器(开放时间、分类等)。为此,我使用Hibernate标准以编程方式添加过滤器

现在我有一个完美的工作名称查询,它给出了某个点周围的所有位置,还有一个完美的工作条件查询,它根据一些过滤器给出了所有位置

我的问题是:在冬眠状态下,将这两种动物结合在一起的最佳方式是什么?(也就是说,我需要某个点周围的所有位置都满足某些筛选条件。)例如,是否有任何方法可以在条件搜索中将NamedQuery用作子查询

冬眠时,将这两种动物结合在一起的最佳方式是什么


据我所知,那是不可能的。因此,要么使用条件查询编写所有内容(我个人不知道如何满足您的要求),要么计算动态HQL字符串。

或者是否可以使用条件表示邻近搜索?我当然可以接受。我只是不知道该怎么做(例如,如何将haversine公式表达式添加到SELECT子句中,然后在HAVING with CRITIES中引用它),我希望可以避免动态构建字符串。但我想没有其他选择了。如果hibernate将来支持这一点,那就太好了!