CreateAlias 与 CreateCriteria的区别
来源:互联网 发布:软件行业销售规章制度 编辑:程序博客网 时间:2024/05/12 02:06
HQL运算符
QBC运算符
含义
=
Restrictions.eq()
等于equal
<>
Restrictions.ne()
不等于not equal
>
Restrictions.gt()
大于greater than
>=
Restrictions.ge()
大于等于greater than or equal
<
Restrictions.lt()
小于less than
<=
Restrictions.le()
小于等于less than or equal
is null
Restrictions.isnull()
等于空值
is not null
Restrictions.isNotNull()
非空值
like
Restrictions.like()
字符串模式匹配
and
Restrictions.and()
逻辑与
and
Restrictions.conjunction()
逻辑与
or
Restrictions.or()
逻辑或
or
Restrictions.disjunction()
逻辑或
not
Restrictions.not()
逻辑非
in(列表)
Restrictions.in()
等于列表中的某一个值
not in(列表)
Restrictions.not(Restrictions.in())
不等于列表中任意一个值
between x and y
Restrictions.between()
闭区间xy中的任意值
not between x and y
Restrictions.not(Restrictions..between())
小于值X或者大于值y
ICriteria criteria = this.Session.CreateCriteria<CpCourse>()
.CreateAlias(CpCourse._Organizations, "o")//表示CoOrganization实体和CpCourse实体做关联
//.Add(Expression.Eq("o." + CoOrganization._Address, "456"));//可以根据别名再配置条件,该条件也可以写在
下面任意位置
.GetCriteriaByAlias("o")//表示跳到CoOrganization实体,如果不写表示还在CpCourse实体
.CreateAlias(CoOrganization._Users, "u")//表示CoUser实体和CoOrganization实体进行关联
.Add(Expression.Eq("u." + CoUser._UserName, "zhuangyq"));
//.Add(Expression.Eq("o." + CoOrganization._Address, "456"));//如这个位置
IList<CpCourse> list = criteria.List<CpCourse>();
以下结果集同上面写法
ICriteria criteria = this.Session.CreateCriteria<CpCourse>()
.CreateCriteria(CpCourse._Organizations)//表示到达CoOrganization实体,与CpCourse实体关联
//.Add(Expression.Eq(CoOrganization._Address, "456"))//条件必须紧跟CoOrganization实体后面
.CreateCriteria(CoOrganization._Users)//表示到达CoUser实体,与CoOrganization实体关联
.Add(Expression.Eq(CoUser._UserName, "zhuangyq"));"))//条件必须紧跟CoUser实体后面
IList<CpCourse> list = criteria.List<CpCourse>();
CreateCriteria表示到达该实体,再与.CreateAlias或.CreateCriteria的后面的实体与该实体进行关联。
关于CreateCriteria实体的条件必须紧跟CreateCriteria的实体其后。
CreateAlias创建表别名的方式,只要在这个表的别名创建之后都可以再进行条件的添加(条件必须包含别名)
或者使用GetCriteriaByAlias方法达到该包含别名的实体后继续操作再进行.CreateAlias或.CreateCriteria。
在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)) .CreateAlias("Roles","role") .Add(Restrictions.Eq("role.RoleName","admin"); .Add(Restrictions.Eq("UserName", "Joe") //前后都没有关系,贴着role也可以。
- CreateAlias 与 CreateCriteria的区别
- CreateAlias 与 CreateCriteria的区别
- CreateAlias 与 CreateCriteria的区别
- CreateAlias 和 CreateCriteria 的区别
- Criteria.createAlias与createCriteria使用区别
- createQuery与createCriteria的用法及区别
- mybatis createcriteria和or的区别
- createAlias的第三个参数
- createCriteria 的用发总结
- Hibernate中createCriteria即QBC查询的详细用法和HQL的区别?
- DetachedCriteria的createCriteria(String associationPath,String alias)方法有bug
- Hibernate中createCriteria即QBC查询的详细用法
- Hibernate中createCriteria即QBC查询的详细用法
- Hibernate中createCriteria即QBC查询的详细用法
- Hibernate中createCriteria即QBC查询的详细用法
- Hibernate中createCriteria即QBC查询的详细用法
- Hibernate中createCriteria即QBC查询的详细用法
- Hibernate中createCriteria即QBC查询的详细用法
- platform_get_resource函数实现细节------参数num
- linux安装jdk
- Graph cut
- CRF条件随机场简介
- 企业文化
- CreateAlias 与 CreateCriteria的区别
- oracle model子句学习笔记
- 一步一步学android之事件篇——下拉列表事件
- Android 富文本框实现 RichEditText
- Mongodb的一些应用(二)
- 出现/bin/sh: can't access tty; job control turned off的解决方案
- 第九次作业编辑距离NO.3
- C运行时库详解
- 完美实现Silverlight动态加载