用户登录
用户注册

分享至

hibernate alias

  • 作者: 针快
  • 来源: 51数据库
  • 2020-10-30
在NHibernate里面查很常用。CreateAlias 返回值还是当前的Criteria,但是CreateCriteria返回的新的Criteria。


基本用法 如下。
var cri = session.CreateCrieria(typeof(User))
.CreateCriteria("Roles")
.Add(Restrictions.Eq("RoleName","admin");


var cri = session.CreateCrieria(typeof(User))
.CreateAlias("Roles","role")
.Add(Restrictions.Eq("role.RoleName","admin");

现在我除了想查role是admin的用户外,也想查出UserName名字叫做Joe的用户,那么他们就有区别

var cri = session.CreateCrieria(typeof(User))
.Add(Restrictions.Eq("UserName", "Joe")
.CreateCriteria("Roles")
.Add(Restrictions.Eq("RoleName","admin");

//第一种写法
var cri = session.CreateCrieria(typeof(User))
.Add(Restrictions.Eq("UserName", "Joe") //紧贴着User
.CreateAlias("Roles","role")
.Add(Restrictions.Eq("role.RoleName","admin");
//第二种写法。
var cri = session.CreateCrieria(typeof(User))
.CreateCriteria("Roles")
.Add(Restrictions.Eq("RoleName","admin");
.Add(Restrictions.Eq("UserName", "Joe") //



根据ayende?说,是生成的sql效率是一样的,不过原来的blog已经找不到了。



  期待看到有用的回答!
软件
前端设计
程序设计
Java相关