欢迎投稿

今日深度:

Atitit.Hibernate中Criteria 使用总结and 关联查询 and 按

Atitit.Hibernate中Criteria 使用总结and 关联查询 and 按照子对象查询 o9o,hibernatecriteria


Atitit.HibernateCriteria 使用总结and 关联查询 and 按照子对象查询 o9o

 

1. Criteria,,Criterion ,, 1

<2. 主要的对象黑头配置磊个关联, 1

3. Criteria 黑头配置关联查询了... 2

4. Ati Meata 配置关联 @CriteriaRelt 2

5. 关联createCriteria() 3

6. Criteria的使用outline 4

7. 参考:: 5

 

 

1. Criteria,,Criterion ,,

Criteria是一种比hql面向对象的查询方式。Criteria 可使用 Criterion 和 Projection 设置查询条件。可以设置 FetchMode( 联合查询抓取的模式 ) ,设置排序方式,Criteria 还可以设置 FlushModel (冲刷 Session 的方式)和 LockMode (数据库锁模式)。

2. 主要的对象黑头配置磊个关联,

public class GvPlayRecord 

Equipment eq;

    

    /**

//  attilax 老哇的爪子 5_u_8   o9n   

 * @return the eq

 */

  @ManyToOne

    @NotFound(action=NotFoundAction.IGNORE)

    @JoinColumn(name = "equipment_id", insertable = false,updatable = false)

   @RemoteProperty

public Equipment getEq() {

return eq;

}

Criteria c = new BaseSvs(). getSession().createCriteria(GvPlayRecord.class);

SimpleExpression se= Restrictions.eq("eq.dpt.groupid",   114 );

//c.add(se);

List  list = c.list();

 

三说新不上  eq.dpt.groupid 属性...好像直黑头的配置不生效.. 

 

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

 

 

 

3. Criteria 黑头配置关联查询了...

Criteria c = new BaseSvs(). getSession().createCriteria(GvPlayRecord.class);

 Criteria eqCri=c.createCriteria("eq");

eqCri.add(Restrictions.eq("departId",   117 ));

 

中间才行兰...

 

4. Ati Meata 配置关联 @CriteriaRelt

 

@CriteriaRelt(fld="departId")

Equipment eq;

 

 

 

框架处理code

 //yash condition process. def

 SqlAti_Criteria sql=new SqlAti_Criteria();

 sql.reqMap=QueryPropertyssMap;

 sql.Criteria=c;

 sql.setCls(cls). addWhereExp(fld);

 

@SuppressWarnings("all"public SqlAti addWhereExp(Field fld) {

 CriteriaRelt an=fld.getAnnotation(CriteriaRelt.class);

if(an!=null)

{

Criteria  crSub=this.Criteria.createCriteria(fld.getName());

crSub.addRestrictions.eq(an.fld(),  this.reqMap.get(an.fld())));

}

 

return this;

}

5. 关联createCriteria()

4. 

5. 
你可以使用createCriteria()非常容易的在互相关联的实体间建立 约束。
 
List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.like("name", "F%")
    .createCriteria("kittens")
        .add( Restrictions.like("name", "F%")
    .list();


注意第二个 createCriteria()返回一个新的 Criteria实例,该实例引用kittens 集合中的元素。 
接下来,替换形态在某些情况下也是很有用的。
 
List cats = sess.createCriteria(Cat.class)
    .createAlias("kittens", "kt")
    .createAlias("mate", "mt")
    .add( Restrictions.eqProperty("kt.name", "mt.name") )
    .list();


(createAlias()并不创建一个新的 Criteria实例。
Cat实例所保存的之前两次查询所返回的kittens集合是 没有被条件预过滤的。如果你希望只获得

符合条件的kittens, 你必须使用returnMaps()。 
 
List cats = sess.createCriteria(Cat.class)
    .createCriteria("kittens", "kt")
    .add( Restrictions.eq("name", "F%") )
    .returnMaps()
    .list();
Iterator iter = cats.iterator();
while ( iter.hasNext() ) {
    Map map = (Map) iter.next();
    Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);
    Cat kitten = (Cat) map.get("kt");
}

 

 

6. Criteria的使用outline

5. 动态关联抓取

6. 6. 查询示例
org.hibernate.criterion.Example类允许你通过一个给定实例 构建一个条件查询。

7. 7. 投影(Projections)、聚合(aggregation)和分组(grouping

8. 8. 离线(detached)查询和子查询

 

7. 参考::

HibernateCriteria的完整用法 - LifeNote - BlogJava.htm

我要啦免费统计

问hibernate Criteria 怎进行子对象关联查询,

第一个:
Criteria criteria = hibernateTemplate.getSessionFactory().getCurrentSession().createCriteria(Dept.class);
criteria.add(Restrictions.like("name", "%aa%"));
第二个:
Criteria criteria = hibernateTemplate.getSessionFactory().getCurrentSession().createCriteria(Dept.class);
Criteria senduser = criteria.createCriteria("a");//这个小a是Dept中关联A.class的属性名
criteria.add(Restrictions.like("name", "%AA%"));
最后返回
return criteria.list();
 

Hibernate中Criteria的对象字段怎查询?

到了Hibernate3.0以后,关联关系的对象默认都是使用延迟加载,例如<one-to-many时.但我在映射<one-to-one,<many-to-one关系时指定了lazy="true",但是在查询对象时,我只想查询一个对象,仍然会把这个对象所关联的<one-to-one,<many-to-one对象一起查询出来,这样造成了极大的性能浪费.在不指定lazy属性时,<many-to-one所关联的对象反而会延迟加载,这让我大为困惑,还以为是Hibernate的bug.
在网上查找资料,说在为了延迟加载<one-to-one,<many-to-one所关联的对象,需要设置被关联的对象<class name="" lazy="true",我也这样做了,但是仍然没有效果.
仔细阅读了Hibernate的手册,才发现原来要延迟加载<one-to-one,<many-to-one所关联的对象时,除了要指定lazy="true"外,还需要运行期字节码增强,而我省去了这一步,所以延迟加载没有效果.同时还发现在默认情况下,<one-to-one,<many-to-one的lazy属性是"proxy"而不是"true"!因此如果直接采用lazy的默认值,是可以延迟加载的.
总结一下:<many-to-one默认的属性是lazy="proxy",此时默认是会延迟加载的.在指定了lazy="true"之后,必须要经过运行期字节码增加,延迟加载才有效果.
而<one-to-one相对要复杂一点,延迟加载还要受到constrained属性的限制.constrained="false"时表明实体和被关联到的实体的约束不是强制的,即存在一个实体时,它通过<one-to-one关联的实体可能存在,也可能不存在,这时在查询实体时,Hibernate总会发起一次查询检查<one-to-one所关联的实体是否存在,而这时已经可以把one-to-one关联的实体查询出来了,因此在<one-to-one关系中,如果constrained="false",总是会立即加载关联到的实体.
如果当constrained="true",且lazy="proxy"(默认),是可以延迟加载的.
如果当constrained="true",且lazy="true"时,需要经过运行期字节码增加,延迟加载才会奏效.
如果数据量过大, 当然还是有这个必要. 也可以做到, 但是返回的不会是对象,而是字段数组.
hibernate 管这叫投影 Criteria criteria=session.createCriteria(User.class);
ProjectionList proList = Projections.projectionList();//设置投影集合 proList.add(Projections.groupProperty("userName")); proList.add(Projections.groupProp......余下全文>>
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/3533.html NewsArticle Atitit.Hibernate中Criteria 使用总结and 关联查询 and 按照子对象查询 o9o,hibernatecriteria Atitit.Hibernate 中 Criteria 使用总结 and 关联查询 and 按照子对象查询 o9o 1.Criteria,,Criterion,, 1 2.主要的对象黑...
相关文章
    暂无相关文章
评论暂时关闭