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 にマッピングされている場合 (1 つは Polygon で、もう 1 つは Point.

追伸: 質問をしたとき、ようやく問題が理解できました。

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

私にとって、これは同様の問題を解決していないようです。問題を解決するために、Criteria を SpatialRestriction と共に使用することに戻りました。この例では、場所がジオメトリである特定の場所を含むすべてのリージョンを検索します。

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