当前位置: 首页 > 面试题库 >

如何在NamedQuery中编写NamedQuery Haversine公式?

养枫涟
2023-03-14
问题内容

我想在haversine公式的查询下运行为NamedQuery,但我不知道如何纠正它。

set @orig_lat = 37.334542;
set @orig_lon = -121.890821;
set @dist = 10;

select  *,
        3956 * 2 * ASIN(SQRT(POWER(SIN((@orig_lat - abs(mlatitude)) * pi() / 180 / 2), 2) 
          + COS(@orig_lat * pi() / 180) * COS(abs(mlatitude) * pi() / 180) * POWER(SIN((@orig_lon - mlogitude) * pi() / 180 / 2), 2))) as distance
from user_gps_location
having distance < @dist
ORDER BY distance

我将查询运行到mysql中,对我来说很好用,但是当我将以下查询写为NamedQuery时,它给了我错误:

UserGpsLocation users = (UserGpsLocation)em.createQuery("select (3956*2*ASIN(SQRT(POWER(SIN((?1-abs(u.mlatitude))*pi()/180/2),2)+COS(?1*pi()/180) * COS(abs(u.mlatitude)* pi()/180) *POWER(SIN((?2 -u.mlogitude)* pi()/180/2),2)))) as distance from UserGpsLocation u having distance < :dist ORDER BY distance")
      .setParameter(1, mlatitude)
      .setParameter(2, mlogitude)
      .setParameter("dist", 10)
      .getResultList();

例外:

javax.servlet.ServletException: java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: 
Exception Description: Syntax error parsing the query [select (3956*2*ASIN(SQRT(POWER(SIN((?1-abs(u.mlatitude))*pi()/180/2),2)+COS(?1*pi()/180) * COS(abs(u.mlatitude)* pi()/180) *POWER(SIN((?2 -u.mlogitude)* pi()/180/2),2)))) as distance from UserGpsLocation u having distance < :dist ORDER BY distance], line 1, column 19: unexpected token [(].
Internal Exception: NoViableAltException(83@[()* loopback of 383:9: (d= DOT right= attribute )*])

谁能帮助我,告诉我这是怎么回事?


问题答案:

终于能够找到解决方案。我使用createNativeQuery代替createQuery,它解决了我的问题。



 类似资料:
  • 有没有办法覆盖Spring Data Rest执行的findAll查询? 我需要一种基于一些特定标准过滤结果的方法,似乎使用应该符合我正在寻找的内容,所以我设置了一个测试。 有了它,我希望SDR利用我的findAll()查询(返回1个结果),但它执行相同的旧findAll逻辑(返回所有结果)。 在我的存储库中,我添加了: 在本例中,它会提取提供的。所以 我应该如何覆盖默认的逻辑?我需要实际构建一组

  • 问题内容: 我正在尝试从logstash开始,并且我的应用程序具有以下类型的日志。这里的5表示接下来将有5行是针对不同相关事物收集的统计信息。 这些基本上是应用程序统计信息,每行指示大约一个资源。 有没有一种方法可以使用logstash正确解析它,以便可以将其用于elasticsearch? 编辑 : 这是我正在使用的配置,第一组统计信息已正确解析,但在该管道阻塞之后。请注意有150个此类日志,但

  • 我有一个有两张表的 ,我正在试着建立一张统计表。但是,有些公式需要phpexcel尚未实现的函数,只要在Excel中打开文件时计算出来,我并不介意。 当我尝试保存时,我得到了一个异常: 无效的单元格坐标A 因为范围 尚未实现。因此,我禁用了保存时的预计算。 不会引发异常,但我的两个单元格(codeb2/code>和 )都是空的。当我在相应的单元格中复制粘贴公式时,Excel能够找到正确的值。

  • 问题内容: 我喜欢使用指令制作自定义组件。我检查了很多教程,它使我感到困惑,任何人都可以解释指令的工作原理。我计划制造的组件是 呼喊列表的模板将像这样 问题答案: 这是您的指令,带有一些内联注释: 和模板文件: 现在,您可以在代码中使用它,如下所示: 控制器: 视图: 希望这可以帮助!

  • 问题内容: 如何在Doctrine 2.0中编写此SQL查询(并获取结果)? 问题答案: 好吧,我发现也许是最好的解决方案: 然后是两个类( NotificationGroup 和 NotificationEvent ),它们扩展了 Notification :