NHibernate createQuery使用方法cal的冒号

时间:2010-01-14 08:25:18

标签: nhibernate

尝试在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。

谢谢!

3 个答案:

答案 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正确管理。