NHibernate 未映射 table - 对象是多列类型 - ToListResultTransformer

NHibernate unmapped table - object is a multicolumn type - ToListResultTransformer

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

用户定义他想要 select 来自 table User 的列 FirstNameSurName。然后我构建这个 select 语句:

select (firstname || surname) as resultData from user

现在我尝试使用 select 语句:

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

但我现在的问题是我收到 GenericADOException 消息

object is a multicolumn type

我在 Internet 上没有找到太多关于我的问题的信息。只有一个线程完成相同的任务而没有这个错误:NHibernate SQL Query mapping on Single Column Result

是的,我发现了我的问题。代码没问题,数据库没问题。

列可以有 null 个值,而 NHibernate 不喜欢那样。

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

我通过调整 sql 语句解决了这个问题。我现在正在使用 coalesce 函数。

新的sql语句:

select (coalesce(firstname, '') || coalesce(surname, '')) as resultData from user