1

私は Hibernate を使用する Java 側から来ていますが、名前付きクエリを .xml に配置する適切な場所が見つかりませんでしたNHibernate

Visual Studio 2008、C# 2008 の使用

質問があります

<query name="SchwabAccountList">
  from DB_Accounts a
  where a.AdminOffCode = 'SWB'
</query>

.hbm.xmlそして、それをAccount テーブル ( DB_Accounts)に入れたい

ファイルの最後に配置しましたが、<class>タグ内に配置しました

    <query name="AccountList">
      from DB_Accounts a
      where a.AdminOffCode = 'SWB'
    </query>
  </class>
</hibernate-mapping> 

私が使用しているコードは、いくつかの異なる方法を試しましたが、

Named query not known: AccountList

または、私が使用しようとした他の名前 ( assembly.dir.dir.class.queryname) のようなもの。

アクセスコードはこんな感じ。

              ISessionFactory factory = cfg.BuildSessionFactory();
              ISession session = factory.OpenSession();

              IList<DB_Accounts> accountList = 
                  (IList<DB_Accounts>)(session.GetNamedQuery("AccountList").List());

              foreach (BDM_Controller.Source.ORM.DB_Accounts acctRec in accountList)
              {
                         ...

私は何が欠けていますか?

4

3 に答える 3

5

クエリをタグの外に移動し、クエリを認識させました。以前にマッピング ファイルの先頭に配置していたのですが、次のタグについて不平を言いました。一重引用符に問題があった可能性があります。これらの問題から保護するために CDATA ラッパーを追加しました。そのため、2 つの変更を組み合わせることで、おそらく問題は解決しました。

私は今持っています:

  </class>
  <query name="AccountList" cacheable="true" read-only="true">
    <![CDATA[
      from DB_Accounts a
      where a.AdminOffCode = 'SWB'
      ]]>
  </query>
</hibernate-mapping> 

そしてこれはうまくいきます

于 2009-10-15T21:29:42.620 に答える
3

また、マッピング ファイルのビルド アクションが「埋め込みリソース」として設定されていることを確認してください。そうしないと、マッピング ファイル自体が正しい場合でも同じエラーが発生します。

于 2011-04-28T19:12:28.003 に答える
1

また、.x​​ml だけでなく、拡張子 .hbm.xml を使用して hbm ファイルが追加されていることも確認してください。これも同じエラーになります。

于 2015-12-16T10:24:28.253 に答える