首先,我想问一下一个四表关联用了2秒,正常吗?代码是:
Criteria criteria = session.createCriteria(ImsTagTemplate.class);
Criteria template = criteria.createCriteria("imsTemplate");
Criteria templateSet = template.createCriteria("imsTemplateSet");
Criteria user = templateSet.createCriteria("imsUser");
user.add(Restrictions.eq("username", name));
criteria.setFirstResult((cp-1)*ps);
criteria.setMaxResults(ps);
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
return criteria.list();我在日志的DEBUG中将查询语句都剪了下来,大概是:
select * from ims_tag_template this_ where imsuser3_.username=? limit ?
select * from ims.ims_show_type imsshowtyp0_ where imsshowtyp0_.id=?
select * from ims.ims_tab_type imstabtype0_ where imstabtype0_.id=?
select * from ims_tag_template imstagtemp0_ where imstagtemp0_.tag_detail=?
select * from ims_tag_template imstagtemp0_ where imstagtemp0_.tag_detail=?
select * from ims.ims_tab_type imstabtype0_ where imstabtype0_.id=?
select * from ims_tag_template imstagtemp0_ where imstagtemp0_.tag_detail=?
select * from ims_tag_template imstagtemp0_ where imstagtemp0_.tag_detail=?
select * from ims_tag_template imstagtemp0_ where imstagtemp0_.tag_detail=?
select * from ims.ims_tab_type imstabtype0_ where imstabtype0_.id=?
select * from ims_tag_template imstagtemp0_ where imstagtemp0_.tag_detail=?
select * from ims_tag_template imstagtemp0_ where imstagtemp0_.tag_detail=?
select * from ims_tag_template imstagtemp0_ where imstagtemp0_.tag_detail=?
select * from ims_tag_template imstagtemp0_ where imstagtemp0_.tag_detail=?
select * from ims.ims_tab_type imstabtype0_ where imstabtype0_.id=?
select * from ims_tag_template imstagtemp0_ where imstagtemp0_.tag_detail=?
select * from ims_tag_template imstagtemp0_ where imstagtemp0_.tag_detail=?
select * from ims_tag_template imstagtemp0_ where imstagtemp0_.tag_detail=?
select * from ims_tag_template imstagtemp0_ where imstagtemp0_.tag_detail=?
select * from ims_tag_template imstagtemp0_ where imstagtemp0_.tag_detail=?
update ims_user set email=?, is_del=?, last_login_date=?, last_login_ip=?, password=?, pwd_answer=?, pwd_question=?, reg_date=?, role=?, sex=?, username=? where id=?我发现只有第一句是实现我要的结果,那其他查询有什么作用呢(好象很多都是重复的)?最后为什么还有一个是更新?
请高手解答一下我的疑问.谢谢!!

解决方案 »

  1.   

    函数是这样的:
    public List<ImsTagTemplate> findByUserName(String username, Integer currentPage, Integer pageSize) {
    final String name = username;
    final Integer cp = currentPage;
    final Integer ps = pageSize;
    return (List<ImsTagTemplate>)getHibernateTemplate().execute(new HibernateCallback(){
    public Object doInHibernate(Session session){
    Criteria criteria = session.createCriteria(ImsTagTemplate.class);
    Criteria template = criteria.createCriteria("imsTemplate");
    Criteria templateSet = template.createCriteria("imsTemplateSet");
    Criteria user = templateSet.createCriteria("imsUser");
    user.add(Restrictions.eq("username", name));
    criteria.setFirstResult((cp-1)*ps);
    criteria.setMaxResults(ps);
    criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
    logger.debug(String.valueOf(System.currentTimeMillis()));
    return criteria.list();
    }
    });
    }