自动生成的HBM
  <class name="com.cntomorrow.zyqx.entity.Yhgwdz" table="用户岗位对照表" schema="TELEUSER">
        <composite-id name="id" class="com.cntomorrow.zyqx.entity.YhgwdzId">
         <key-many-to-one name="yhjbxx" class="com.cntomorrow.zyqx.entity.Yhjbxx" lazy="false">
           <column name="用户ID" length="6" />
         </key-many-to-one>
          <key-many-to-one name="gwxx" class="com.cntomorrow.zyqx.entity.Gwxx" lazy="false">
           <column name="岗位ID" length="6" />
         </key-many-to-one>
.......
 
还有两个类,一个只有ID属性的类,一个有其他属性的类(因为表没有主键)
然后我想加个条件,只能加到这个只有ID属性的类里面。
如下:
Yhgwdz yhh=new Yhgwdz();//只有id属性的那个类
  YhgwdzId yy=new YhgwdzId();//其他属性的类
  Page page=new Page();
  Yhjbxx yh=new Yhjbxx();
  yh.setYhid(212);//加入条件
  yy.setYhjbxx(yh);
  yhh.setId(yy);//加入条件
 
然后通过这个查询
Session sss = getSession();
  Criteria criteria = sss.createCriteria(Yhgwdz.class);
  
  if (yhgwdz != null) {
   if (yhgwdz.getId() != null && !"".equals(yhgwdz.getId())) {
    criteria.add(Restrictions.eq("id", yhgwdz.getId()));
   }
List lii = criteria.list();
 
 
结果我发现他把所有条件都给列上了。肯定是除了我传的那个条件,剩下的都为空,所以导致查不出东西来。不传条件一切正常。以下是自动生成sql语句:
select this_.用户ID as 用户ID6_0_, this_.岗位ID as 岗位ID6_0_, this_.部门ID as 部门ID6_0_, this_.加入时间 as 加入时间6_0_, this_.批准人ID as 批准人ID6_0_, this_.操作者ID as 操作者ID6_0_ from TELEUSER.用户岗位对照表 this_ where (this_.用户ID=? and this_.岗位ID=? and this_.部门ID=? and this_.加入时间=? and this_.批准人ID=? and this_.操作者ID=?)
 
 
 
求解怎么修改正常

解决方案 »

  1.   


    Session session = HibernateSessionFactory.getSession();
     Transaction tran = session.beginTransaction();
    Query query = session.createSQLQuery("select * from userInfowhere yhid=? and yhjbxx=?");
     query.setString(0, "");
     query.setString(你数据库字段的位置, "");
    tran.commit();
    List l = query.list();
     if(l.size() != 0 ){
     System.out.println(l.size());
             }
             else{
                 System.out.println("login fail");
            }
         }
      

  2.   

    。关键我用的SSH框架,HIBERNATE没有建立HibernateSessionFactory这个类好像然后用的时候说找不到
      

  3.   

    你的dao实现类可以继承HibernateDaoSupport
    public class QueryDaoImpl extends HibernateDaoSupport implements QueryDao可以使用sessionfactory,SessionFactory sessionFac= this.getSessionFactory();