我正在尝试查询我的实体之间的空间关系但仍然遇到此异常:
org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected AST node: ( near line 1,
我的实体工作正常,映射也是如此。我相信我的查询有问题:
SELECT r FROM Regiao r, Imovel i WHERE r.nivel = :nivel AND contains(r.regiao, i.latlng)
r.regiao和i.latln都是GeometryType映射的(一个是Polygon,另一个是Point。
Ps。:当我问这个问题时,我终于理解了这个问题。
答案 0 :(得分:15)
显然空间函数的语法要求你根据布尔值测试它,所以我不得不在查询的末尾添加比较:
SELECT r FROM Regiao r, Imovel i WHERE r.nivel = :nivel AND contains(r.regiao, i.latlng) = TRUE
答案 1 :(得分:1)
对我而言,这似乎并没有解决类似的问题。 我恢复使用带有SpatialRestriction的Criteria来解决我的问题。 此示例搜索包含给定位置的所有区域,其中此处的位置为几何。
Criteria criteria = getCurrentSession().createCriteria(Region.class);
criteria.add(SpatialRestrictions.contains("theGeom", location));