0

我让 NHibernate 执行从数据库构建的原始 sql 查询。在软件中,用户可以选择一个表和几个具有定义顺序的列。在我的软件中,我使用这些信息来构建一个 sql 查询,该查询从表中选择定义的列并将这些列连接到一列。这是一个简单的例子。

用户定义他想从表中选择列FirstNameund 。然后我构建这个选择语句: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 回答