s = null;
try {
  s = getSession();
  Query q = s.createQuery("from Department as department where department.Id like :department");
  q.setString("department", "'%开发部%'");
  return q.list();
} finally {
  closeSession(s);
}这样行不行?

解决方案 »

  1.   

    q.setString(0, "开发部");
    q.setString(1, "开发部");
      

  2.   


    try {
      s = getSession();
      String HQL_QUERY="from Department as department where department.Id like ?";
      List list = s.find(HQL_QUERY, "%开发部%", Hibernate.STRING);  return q.list();
    } finally {
      closeSession(s);
    }
    试下吧,具体怎么该自己看,我随手写的没测过
      

  3.   

    q.setString(0, "开发部");时,hibernate会把 开发部 这三个字加上引号后 '开发部' 代入SQL语句。
    请问有没有办法,使q.setString(0, "开发部");时 开发部 这三个字不用加上引号代入SQL语句中。
      

  4.   

    passwords(name)是正解。
    q.setString(0, "开发部");语句中给字符串加上单引号,以及对其他非法字符的过滤都是不可避免的,所以必须像passwords(name)写的那样在调用之前对字符串进行处理。
    如果不想做这种处理的话,建议还是使用Hibernate提供的条件查询(Criteria Query)
    ====
    List departmentList = s.createCriteria(Department.class)
        .add( Expression.like("Id", "%开发部%") )
        .list();