簡體   English   中英

為什么Nhibernate無法為我創建此簡單查詢?

[英]Why Nhibernate cannot create this simple query for me?

我不明白為什么不創建此簡單查詢。 我從測試中調用此方法,並拋出異常,抱怨第1行第7列,在那里我看不到任何錯誤。

    public IList<Continent> GetContinentByName(string name)
      {
       ISession session = GetSession();

       IQuery query = 
                         session.CreateQuery("select from Continent where Continent.ContinentShort='Atlantis'");

// (........) Next step will be getting the list from the query if I can make it work

我在下面收到antlr例外

測試案例'M:DataAccessLayer.HibernateDataProvider.GetContinentByName(System.String)'失敗:引發了類型'Antlr.Runtime.NoViableAltException'的異常。 在第1行第7列附近NHibernate.Hql.Ast.ANTLR.QuerySyntaxException:引發了類型為“ Antlr.Runtime.NoViableAltException”的異常。 第1行,第7列附近

有什么建議么?

謝謝

session.CreateQuery擴展HQL查詢,如下所示: sess.CreateQuery("from DomesticCat cat where cat.Name in (:namesList)");

如果您嘗試推送本機SQL查詢,則必須執行以下操作: session.CreateSQLQuery("SELECT {cat.*} FROM CAT {cat} WHERE ROWNUM<10", "cat", typeof(Cat))

但是,這不是使用NHibernate的好方法。

有關更多信息,請參見Nhibernate文檔: http : //nhibernate.info/doc/nh/en/index.html#manipulatingdata-querying

我認為這是您提供完整實體名稱的別名。 嘗試:

IQuery query = session.CreateQuery("from Continent c where c.ContinentShort='Atlantis'");

如果仍不能解決問題,請顯示大陸映射。

問題是開始時是“選擇”。 似乎在我使用的版本中無效。 因此,一旦我一開始刪除了“選擇”,它就可以正常工作!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM