关于hibernate hql查询语句疑问
前面有表单,按姓名查询和按学号查询, 这是查询语句
String query="from Student s where s.? = ?";
Query q=se.createQuery(query);
q.setString(0, col);
q.setString(1, con);
第一个问号是列名,第二个问号是内容,
我的思路是当我选择按学号查询,col就是id,con就是我输入的假定20074660
当我选择按姓名查询,col就是name,con就是我输入的假定王二小
也就是动态查询,可是运行之后会报错
org.hibernate.hql.ast.QuerySyntaxException: expecting IDENT, found '?' near line 1, column 45 [from com.ysh.repm.model.Student s where s.? = ?]
怎么解决?????????
第一个字段的传值不可以用樱悔?号的 最好用品字符串拼出来 ?只针对查询条件的参脊谈正数吧
hql语句可以这样写 "from Students where s." + col + " = ?" 然后q.setString(0,con) 就侍岩可以了
你试试下面代码,希望茄胡对你有所橘纳消帮助!
public static final String STUDENT_ID = "studentID";//学号
public static final String STUDENT_NAME = "studentName";//姓名
//根圆知据所传属性进行查询:
public List findByProperty(String propertyName, Object value) {
try {
String queryString = "from DTbBusiMaster as model where model."
+ propertyName + "= ?";
return getHibernateTemplate().find(queryString, value);
} catch (RuntimeException re) {
throw re;
}
}
public List findByStudentID(Object studentID) {
return findByProperty(STUDENT_ID, studentID);
}
public List findByBusiShortname(Object studentName) {
return findByProperty(STUDENT_NAME, studentName);
}
动态查询应该要先declare一个@变量放那吧,直接一个问号应该不行哦