首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPA中的三角函数

JPA中的三角函数
EN

Stack Overflow用户
提问于 2015-11-23 00:30:34
回答 1查看 1.1K关注 0票数 2

我正在JPA中运行以下查询:

代码语言:javascript
复制
SELECT c, acos(sin(:lat) * sin(c.latitude) + cos(:lat) * cos(c.latitude) * cos(c.longitude - :lng)) as dist FROM Item c JOIN c.dish.dishtags tags WHERE tags IN :tags AND (c.latitude >= :lat1 AND c.latitude <= :lat2) AND (c.longitude >= :lng1 AND c.longitude <= :lng2) AND dist <= :maxdist

但我得到了以下例外:

代码语言:javascript
复制
[27, 42] The right expression is not an arithmetic expression.
[45, 98] The right expression is not an arithmetic expression.
[13, 14] The SELECT clause has 'acos' and '(sin(:lat) * sin(c.latitude) + cos(:lat) * cos(c.latitude) * cos(c.longitude - :lng)) AS dist' that are not separated by a comma.

我搜索了一下,似乎有些人建议在使用三角函数时使用本机查询,但这对我来说真的很烦人,因为我必须修改已经用JPA编写的许多查询。因此,我想问:是否有办法修改查询以使其正常工作?如果JPA框架不支持常见的三角函数,那将是非常奇怪的。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-23 07:08:06

JPQL不支持这些trig函数(JDO确实支持FWIW)。有些实现可能支持它们作为供应商扩展。我知道DataNucleus JPA,但其他人也可能知道。

另一种方法是使用JPQL标准,并使用类似于

代码语言:javascript
复制
function('sin', :lat)

虽然这可能会抛弃数据库的独立性,但如果这是您的项目的一个考虑。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33862042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档