6

我正在尝试查询我的实体之间的空间关系,但不断收到此异常:

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 映射的(一个是多边形,另一个是点。

Ps.:当我问这个问题时,我终于明白了这个问题。

4

2 回答 2

20

显然,空间函数的语法要求您根据布尔值对其进行测试,因此我必须在查询末尾添加比较:

SELECT r FROM Regiao r, Imovel i WHERE r.nivel = :nivel AND contains(r.regiao, i.latlng) = TRUE
于 2014-10-30T13:05:41.737 回答
1

对我来说,这似乎并没有解决类似的问题。我恢复使用带有 SpatialRestriction 的 Criteria 来解决我的问题。此示例搜索包含给定位置的所有区域,其中位置是几何。

Criteria criteria = getCurrentSession().createCriteria(Region.class);
criteria.add(SpatialRestrictions.contains("theGeom", location));
于 2015-04-30T13:42:13.450 回答