public static List findId(int intid) {
Transaction tx = null;
List list = null;
try {
session = hib.openSession();                               //调用公共类打开session
tx = (Transaction) session.beginTransaction();             //开启事务
Query query = session.createQuery("from Express as m where m.id =:intid");   //按id号检索对象
query.setInteger("intid",intid);                           //动态绑定参数
list = query.list();                                       //执行HQL语句
tx.commit();                                               //提交事务
hib.closeSession(session);                                 //关闭session
} catch (Exception e) {
e.printStackTrace();
tx.rollback(); } return list;
}这里的ID可以用参数来代替  表名怎么换   给个例子  谢谢hqlJava

解决方案 »

  1.   

    对象实体不是对应于表名吗?这个hql语句里面是操作的对象。应该没法换,不过可以通过把对象所映射的数据表的名字改了不就可以了?不知道我的理解对否?
      

  2.   


    另外写个方法  你这是根据ID查询的都不需要用Query
      

  3.   


    像这样
    public class BaseDaoImpl {
       public Object get(Class c, Long id) {
    try {
    session = getSession();
    return session.get(c,id);
    } catch (HibernateException e) {
    e.printStackTrace();
    } finally {
    session.close();
    }
    return null;
    }
    }
      

  4.   

    我的意思是能不能在这个方法中 用参数的办法 动态替换表名  Express是我映射的我想用 替换ID的方法来替换他
      

  5.   


    像这样
    public class BaseDaoImpl {
       public Object get(Class c, Long id) {
    try {
    session = getSession();
    return session.get(c,id);
    } catch (HibernateException e) {
    e.printStackTrace();
    } finally {
    session.close();
    }
    return null;
    }
    }
    这个不是可以吗
    public class BaseDaoImpl {    
                        //这个不就是你实体类的.class吗,后面那个就是要替换的ID
    //假设你要查Express  就传2个参数,一个是Express.class,后面的就是Express的ID啊
       public Object get(Class c, Long id) {
         try {
           session = getSession();
           return session.get(c,id);
         } catch (HibernateException e) {
            e.printStackTrace();
         } finally {
           session.close();
         }
    return null;
    }
      

  6.   


    像这样
    public class BaseDaoImpl {
       public Object get(Class c, Long id) {
    try {
    session = getSession();
    return session.get(c,id);
    } catch (HibernateException e) {
    e.printStackTrace();
    } finally {
    session.close();
    }
    return null;
    }
    }
    这个不是可以吗
    public class BaseDaoImpl {    
                        //这个不就是你实体类的.class吗,后面那个就是要替换的ID
    //假设你要查Express  就传2个参数,一个是Express.class,后面的就是Express的ID啊
       public Object get(Class c, Long id) {
         try {
           session = getSession();
           return session.get(c,id);
         } catch (HibernateException e) {
            e.printStackTrace();
         } finally {
           session.close();
         }
    return null;
    }

    这个方法是好,但我想要拼接的方法 。 跟ID一样
      

  7.   


    像这样
    public class BaseDaoImpl {
       public Object get(Class c, Long id) {
    try {
    session = getSession();
    return session.get(c,id);
    } catch (HibernateException e) {
    e.printStackTrace();
    } finally {
    session.close();
    }
    return null;
    }
    }
    这个不是可以吗
    public class BaseDaoImpl {    
                        //这个不就是你实体类的.class吗,后面那个就是要替换的ID
    //假设你要查Express  就传2个参数,一个是Express.class,后面的就是Express的ID啊
       public Object get(Class c, Long id) {
         try {
           session = getSession();
           return session.get(c,id);
         } catch (HibernateException e) {
            e.printStackTrace();
         } finally {
           session.close();
         }
    return null;
    }

    这个方法是好,但我想要拼接的方法 。 跟ID一样额...  有好的你不用,你要用拼接的也好说啊public static List findId(String entityName,int intid) {
       Transaction tx = null;         
       List list = null;         
       try {             
         session = hib.openSession();                               
         //调用公共类打开session             
         tx = (Transaction) session.beginTransaction();             
         //开启事务             
          Query query = session.createQuery("from " + entityName + " as m where m.id =:intid");   
         //按id号检索对象             
           query.setInteger("intid",intid);                           
       //动态绑定参数             
         list = query.list();                                       
       //执行HQL语句             
         tx.commit();                                               
       //提交事务             
         hib.closeSession(session);                                
       //关闭session         
      } catch (Exception e) {             
         e.printStackTrace();             
         tx.rollback(); 
      }          
      return list;     

      

  8.   


    像这样
    public class BaseDaoImpl {
       public Object get(Class c, Long id) {
    try {
    session = getSession();
    return session.get(c,id);
    } catch (HibernateException e) {
    e.printStackTrace();
    } finally {
    session.close();
    }
    return null;
    }
    }
    这个不是可以吗
    public class BaseDaoImpl {    
                        //这个不就是你实体类的.class吗,后面那个就是要替换的ID
    //假设你要查Express  就传2个参数,一个是Express.class,后面的就是Express的ID啊
       public Object get(Class c, Long id) {
         try {
           session = getSession();
           return session.get(c,id);
         } catch (HibernateException e) {
            e.printStackTrace();
         } finally {
           session.close();
         }
    return null;
    }

    这个方法是好,但我想要拼接的方法 。 跟ID一样额...  有好的你不用,你要用拼接的也好说啊public static List findId(String entityName,int intid) {
       Transaction tx = null;         
       List list = null;         
       try {             
         session = hib.openSession();                               
         //调用公共类打开session             
         tx = (Transaction) session.beginTransaction();             
         //开启事务             
          Query query = session.createQuery("from " + entityName + " as m where m.id =:intid");   
         //按id号检索对象             
           query.setInteger("intid",intid);                           
       //动态绑定参数             
         list = query.list();                                       
       //执行HQL语句             
         tx.commit();                                               
       //提交事务             
         hib.closeSession(session);                                
       //关闭session         
      } catch (Exception e) {             
         e.printStackTrace();             
         tx.rollback(); 
      }          
      return list;     

    这个我刚才也弄出来了 你好热心  结账了