NHibernate比较串联属性

问题描述

你会怎么做
Select *
from Personnel p
where p.LastName + \',\' + p.FirstName + \' \' + p.MiddleInitial LIKE @Employee + \'%\'
使用NHibernate(3.0)?到目前为止,我已经尝试过
personnel.QueryOver<Personnel>()
    .WhereRestrictionOn( x => x.LastName + \',\' + x.FirstName + \' \' + x.MiddleInitial)
    .IsLike(employeeName,MatchMode.Start)
无济于事。     

解决方法

如果使用
Formula
将这三列映射为单个属性,它将起作用:
public class EmployeeMap : ClassMap<Employee>
{
    public EmployeeMap()
    {
        Table(\"Employees\");

        Id(x => x.Id);
        Map(x => x.Name)
          .Formula(\"UPPER(LTRIM(RTRIM(FirstName + \' \' + MiddleName + \' \' + LastName)))\");

        // etc.
    }
}
这是一个使用SQL Server的示例,在Oracle中,您将ѭ4切换为ѭ5,并将沟渠
LTRIM
和switch7 switch。     ,
ICriteria criteria = session.CreateCriteria(typeof(IPersonnel));
        criteria.CreateCriteria(\"Personnel\",\"p\");
        criteria.Add(Restrictions.Like(\"p.LastName + p.FirstName + p.MiddleInitial\",employeeName)); 
        criteria.SetResultTransformer(CriteriaSpecification.DistinctRootEntity);
        return criteria.List<IPersonnel>();
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...