【问题标题】:NHibernate unmapped table - object is a multicolumn type - ToListResultTransformerNHibernate 未映射表 - 对象是多列类型 - ToListResultTransformer
【发布时间】:2015-07-22 13:01:12
【问题描述】:

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

用户定义他想从表User 中选择列FirstNameSurName。然后我构建这个选择语句:

select (firstname || surname) as resultData from user

现在我尝试使用 select 语句:

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

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

对象是多列类型

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

【问题讨论】:

    标签: c# exception nhibernate rawsql resulttransformer


    【解决方案1】:

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

    这些列可能有 null 值,而 NHibernate 不喜欢这样。

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

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

    新的sql语句:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      相关资源
      最近更新 更多