本帖最后由 xuzhenghang 于 2010-02-11 17:10:31 编辑

解决方案 »

  1.   

    你被框架给束缚了。public class QueryDAO extends HibernateDaoSupport {
    /**
     * 返回Query  将要执行的SQL对象
     * @param pcn 调用参数上下文
     * @return 
     */

    public Query  getQuerys(ParamsContext pcn) {
       Query query=getSession().getNamedQuery("XXX");
    }
    }
      

  2.   

    可以使用回调接口
    List list=getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session)
    throws HibernateException, SQLException {

    // dosomething
    }});
      

  3.   

    LZ你好
    你可以去查询一下
    hibernate也是支持query查询语句拼接的
    hibernate的增删改全是对象
    用不惯的话 也可以自己拼接
      

  4.   

    String strsql = "from Product p where p.name like %"+name+"%";
    这样字符串拼接不就动态了么
      

  5.   

    查API HibernateTemplate的
    List executeFind(HibernateCallback HibernateCallback )
    Object execute(HibernateCallback HibernateCallback)
    这2个方法能解决你的问题了,HibernateCallback是个接口,怎么写匿名内部类,你去看看资料吧
    List find(String queryString, Object[] values) 
    List find(String queryString, Object values) 
    List find(String queryString) 
    更方便一点
      

  6.   

    楼主莫急,咱们一起来学...
    1.
    public Object findQuerySql(final String sql, final Object... p/*参数*/) {
           return super.getHibernateTemplate().execute(new HibernateCallback() {
    // @Override
    public Object doInHibernate(Session session)
    throws HibernateException, SQLException {
              Connection conn = session.connection();
    PreparedStatement pstmt = conn.prepareStatement(sql);
    //如果有就添加参数
                        if (null != p && p.length > 0) {
        for (int i = 1; i < p.length + 1; i++) {
    pstmt.setObject(i, p[i - 1]);
    }
    } ResultSet rs = pstmt.executeQuery();
    Object obj = null;
    while (rs.next()) {
        obj = rs.getObject(1);
              }          return obj;
            }
       });}2.load() \ get()1)
    public T loadPojo(Class<T> c, Serializable id) throws CommonException {
    return (T) super.getHibernateTemplate().load(c, id);
    }
    2)
    public T getPojo(Class<T> c, Serializable id) throws CommonException {
    return (T) super.getHibernateTemplate().get(c, id);
    }
    3.4
    在1中的回调中有session(参数)其实有了她,添删改查啥东西都能出来了!
    用this.getHibernateTemplate().delete()你还可以用循环删除