Hibernate Criteria 的用法 HibernateCC++C#F#
程序员文章站
2024-01-24 08:56:10
...
Hibernate Criteria 的用法
1. 普通的查询
Criteria criteria = session.createCriteria(Track.class);
criteria.add(Restrictions.le(”playTime”,length));
return criteria.list();
2. 其他
Criteria criteria = session.createCriteria(Track.class);
criteria.add(Restrictions.le(”playTime”,length));
criteria.addOrder(Order.asc(”title”).ignoreCase());
return criteria.list();
3. 组合条件查询
Criteria critera = session.createCriteria(Track.class);
criteria.add(Restrictions.le(”playTime”,length));
criteria.add(Restrictions.like(”title”,length));
criteria.addOrder(Order.asc(”title”).ignoreCase());
4. 宽松条件查询(OR)
session.createCriteria(Tarck.class)
.add(Restrictions.disjunction()
.add(Restrictions.le(”playTime”),length))
.add(Restrictions.like(”title”), “%A%”)))
.addOrder(Order.asc(”title”).ignoreCase())
.list();
5.对单一属性做简单投影,返回的List 是String类型的List对象
Session.createCriteria(Track.class)
.add(Resritctions.like(”title”,”sometext”, MatchMOde.ANYWHERE).ignoreCase())
.setProjection(Projections.property(”title”))
.list();
6.对多个属性做投影,返回Object数组类型的List对象
Session.createCriteria(Track.class)
.add(Resritctions.like(”title”,”sometext”, MatchMOde.ANYWHERE).ignoreCase())
.setProjection(Projections.property(”title”))
.setProjection(Projections.property(”playTime”))
.list();
7.带聚合的投影
a.创业一个ProjectionList实例
b.对sourceMedia字段分组
c.返回记录总数
d.返回分组的结果集中playTime的最大值
Session.createCriteria(Track.class)
.setProjection(Projections.projectionList()) //a
.add(Projections.groupProperty(”sourceMedia”)) //b
.add(Projections.rowCount()) //c
.add(Projections.max(”playTime”))); //d
//select count(*), max(track.playTime) from track group by track.sourceMedia
8. 对聚合投影结果排序要通过设置别名来完成
Session.createCriteria(Track.class)
.setProjection(Projections.projectionList())
.add(Projections.groupProperty(”sourceMedia”).as(”media”))
.add(Projections.rowCount())
.add(Projections.max(”playTime”)));
.addOrder(Order.asc(”media”));
9. 在关联中应用条件查询
Criteria criteria = session.createCriteria(Track.class);
Criteria artistCriteria = criteria.createCriteria(”artists”);
artistCritera.add(Restrictions.like(”name”,namePattern));
artisCriteria.addOrder(Order.asc(”name”).ignoreCase());
criteria.list();
10. 示例查询
a.示例查询中,值为null的忽略
b.对字符串值按照区分大小写的逐字比较
c.如果比较时,需要忽略为0的属性,可以调用example.excludeZeroes()
d.如果希望对值为null的属性进行匹配可以调用example.excludeNone()
e.example.excludeProperty()用来明确忽略指定名称的特定属性
f.调整字符串处理,还可以使用ignoreCase()和enableLike()方法
SourceMedia media = new SourceMedia();
media.setName(”example”)
Track track = new Track();
track.setSourceMedia(media); \\media 是一个SourceMedia对象
Example example = Example.create(track);
Criteria criteria = session.createCriteria(Track.class);
criteria.add(example);
criteria.addOrder(Order.asc(”title”));
return critera.list();
上一篇: 声明式事务、锁、隔离级别、读取数据问题
下一篇: 打电话的原理
推荐阅读
-
Hibernate Criteria 的用法 HibernateCC++C#F#
-
Hibernate Criteria 的用法 HibernateCC++C#F#
-
Hibernate Criteria 的用法 HibernateCC++C#F#
-
使用hibernate的criteria实现统计数量及多表查询
-
使用hibernate的criteria实现统计数量及多表查询
-
Hibernate save() saveorupdate()的用法第1/2页
-
详解Hibernate cascade级联属性的CascadeType的用法
-
Hibernate中Criteria的完整用法
-
详解Hibernate cascade级联属性的CascadeType的用法
-
Hibernate中Criteria的完整用法