NHibernate:SqlProjection中的表别名

时间:2010-08-11 04:03:09

标签: nhibernate

我有以下代码:

Session.CreateCriteria<Foo>("foo")
    .CreateAlias("foo.Bar", "bar")
    .SetProjections(Projections.SqlProjection("bar.FirstName + ' ' + bar.LastName));

问题在于SqlProjection中条形表的别名。

Hibernate文档说“字符串{alias}将被根实体”的别名替换,但是没有提供任何提示如何访问非root用户的别名实体。

这可能吗?

2 个答案:

答案 0 :(得分:1)

我有一个类似的问题。具体来说,我想创建一个投影,它是几个字段的串联。我没有使用SqlProjection,而是使用了:

Projections.SqlFunction("concat",
                        NHibernateUtil.String,
                        Projections.Property("Field"),
                        Projections.Constant(" "),
                        Projections.Property("Field2",
                        Projections.Constant(" "),
                        Projections.Property("Field3")
                    );

这是基于NHibernate单元测试:UsingSqlFunctions_Concat_WithCast。这适用于SQL Server,尽管“concat”不是本机函数。

答案 1 :(得分:0)

试试这个:

 Session.CreateCriteria<Foo>()
   .CreateCriteria("Bar")
      .SetProjections(Projections.SqlProjection("FirstName + ' ' + LastName)");