2010-01-14 3 views
1

Je reçois un Antlr.Runtime.NoViableAltException levé lorsque j'essaie d'exécuter la requête suivante dans NHibernate.NHibernate createQuery avec les deux-points de la méthode cal

IQuery query = session.CreateQuery("from <table> where 1 in (select <column>.STIntersects(geography::STGeomFromText('POINT(:longitude :latitude)', 4326)))"); 

Je définis la longitude et la latitude dans setQuery.

mon hypothèse est le :: en appelant geography::STGeomFromText... parce qu'il pense que c'est un paramètre de requête. Y a-t-il un moyen d'échapper à la :?

Cette requête fonctionne dans mon SQL Manager Studio.

Merci!

Répondre

1

Est-ce que NHibernate supporte la méthode STIntersects?

Qu'est-ce que vous pourriez faire, est de laisser NHibernate exécuter une (native) requête SQL, comme ceci:

ISQLQuery query = session.CreateSQLQuery ("your sql statement goes here"); 
query.AddEntity (typeof(TheEntityTypeThatYouWant)); 

var result = query.List<TheEntityTypeThatYouWant>(); 
+0

Bonne suggestion. J'ai oublié de mentionner que j'ai essayé ça aussi. Ces demi-colons! – Erix

0

Juste pour partager ce que je fini par faire était de prendre la connexion ADO de la session NHibernate, exécution un SqlCommand directement et manuellement construit mes objets modèles à partir des résultats. C'est nul, mais ça marche. La connexion toujours gérée par NHibernate correctement.

Questions connexes