0

データベースから構築された生のSQLクエリを実行するNHibernateがあります。ソフトウェアでは、使用者は定義された順序でテーブルといくつかの列を選択できます。私のソフトウェアでは、この情報を使用して、テーブルから定義された列を選択し、列を 1 つの列に連結する SQL クエリを作成します。ここに簡単な例があります。

ユーザーは、テーブルから列FirstNameundを選択することを定義します。次に、次の select ステートメントを作成します。SurNameUser

select (firstname || surname) as resultData from user

そして今、selectステートメントを使用しようとしています:

var list = session.CreateSQLQuery(sqlQuery)
            .SetResultTransformer(new NHibernate.Transform.ToListResultTransformer())
            .List();

しかし、私の問題はGenericADOException、メッセージが表示されることです

オブジェクトは複数列タイプです

私の問題については、インターネット上であまり見つかりませんでした。このエラーなしで同じタスクを実行するスレッドのみ: NHibernate SQL Query mapping on Single Column Result

4

1 に答える 1

2

ええ、私は自分の問題を見つけました。データベースではなくコードに問題はありませんでした。

そこでは列にnull値が含まれる可能性があり、NHibernate はそれを好みませんでした。

FirstName | Surname
-------------------
Sam       | Smith
          | Archer
Michael   | Brown

SQLステートメントの調整で問題を解決しました。私は今coalesce関数を使用しています。

新しい sql ステートメント:

select (coalesce(firstname, '') || coalesce(surname, '')) as resultData from user
于 2015-07-23T07:47:36.120 に答える