我想使用Gorm检索10个最近的地理定位对象。 为此,我想自定义 order()参数,以便使用 get_distance(经度,纬度,:经度,:纬度) sql函数。 我一整天都在苦苦挣扎,有人有提示吗?
谢谢!
修改
我终于设法做了我想要的事情,但是有一个非常丑陋的解决方案:
答案 0 :(得分:1)
如果使用hibernate SQL方言注册您的函数,则可以在HQL查询中使用它。例如,将它放在引导代码中:
import org.hibernate.dialect.function.SQLFunctionTemplate
import org.hibernate.Hibernate
def dialect = applicationContext.sessionFactory.dialect
def getDistance = new SQLFunctionTemplate(Hibernate.INTEGER, "get_distance(?1,?2)")
dialect.registerFunction('get_distance', getDistance)
然后你可以在HQL中使用它:
Location.executeQuery(
"""
select id, get_distance(latitude, longitude) as distance
from Location
order by distance
""",
[], [max: 10])
答案 1 :(得分:0)
我们做了以下事情: