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);
}这样行不行?
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);
}这样行不行?
q.setString(1, "开发部");
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);
}
试下吧,具体怎么该自己看,我随手写的没测过
请问有没有办法,使q.setString(0, "开发部");时 开发部 这三个字不用加上引号代入SQL语句中。
q.setString(0, "开发部");语句中给字符串加上单引号,以及对其他非法字符的过滤都是不可避免的,所以必须像passwords(name)写的那样在调用之前对字符串进行处理。
如果不想做这种处理的话,建议还是使用Hibernate提供的条件查询(Criteria Query)
====
List departmentList = s.createCriteria(Department.class)
.add( Expression.like("Id", "%开发部%") )
.list();