尝试在NHibernate中运行以下查询时,我得到Antlr.Runtime.NoViableAltException
。
IQuery query = session.CreateQuery("from <table> where 1 in (select <column>.STIntersects(geography::STGeomFromText('POINT(:longitude :latitude)', 4326)))");
我在setQuery中设置经度和纬度。
我的假设是调用::
时geography::STGeomFromText...
,因为它认为它是一个查询参数。有没有办法逃脱:
?
此查询适用于我的SQL Manager Studio。
谢谢!
答案 0 :(得分:1)
NHIbernate是否支持STIntersects方法?
你可以做的是让NHibernate执行一个(本机)SQL查询,如下所示:
ISQLQuery query = session.CreateSQLQuery ("your sql statement goes here");
query.AddEntity (typeof(TheEntityTypeThatYouWant));
var result = query.List<TheEntityTypeThatYouWant>();
答案 1 :(得分:0)
答案 2 :(得分:0)
只是为了分享我最终做的是从NHibernate会话中取出ADO连接,直接执行SqlCommand并从结果中手动构建我的Model对象。它很糟糕,但它确实有效。连接仍由NHibernate正确管理。