NHibernate 未映射 table - 对象是多列类型 - ToListResultTransformer
NHibernate unmapped table - object is a multicolumn type - ToListResultTransformer
我让 NHibernate 执行从数据库构建的原始 sql 查询。在软件中,用户可以选择一个 table 和几个具有定义顺序的列。在我的软件中,我使用此信息构建一个 sql 查询,该查询 select 是 table 中定义的列,并将这些列连接成一列。这是一个简单的例子。
用户定义他想要 select 来自 table User
的列 FirstName
和 SurName
。然后我构建这个 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
我让 NHibernate 执行从数据库构建的原始 sql 查询。在软件中,用户可以选择一个 table 和几个具有定义顺序的列。在我的软件中,我使用此信息构建一个 sql 查询,该查询 select 是 table 中定义的列,并将这些列连接成一列。这是一个简单的例子。
用户定义他想要 select 来自 table User
的列 FirstName
和 SurName
。然后我构建这个 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