Hibernate多条件查询操作

HTTP Status 500 - cannot define positional parameter after any named parameters have been defined [from model.Demand d where d.title like:keyword or d.content like:keyword and d.type=? order by d.id desc]

错误代码:
		Session session = getSession();
		String hql = "from Demand d where d.title like:keyword or d.content like:keyword and d.type=? order by d.id desc";
		Query query = session.createQuery(hql);
		query.setString("keyword", "%"+keyword+"%");
		query.setParamter(0, type);
		int startRow = (currentPage - 1) * pageSize;
		query.setFirstResult(startRow);
		query.setMaxResults(pageSize);
		@SuppressWarnings("unchecked")
		List demands = query.list();
		session.close();
		return demands;

上面的hql语句写的不是很好,命名过参数后再加“?”就有些来不来了了...
反正正确的代码如下:
String hql = "from Demand d where d.type=? and (d.title like ? or d.content like ?) order by d.id desc";
		Query query = session.createQuery(hql);
		query.setParameter(0, type);
		query.setParameter(1, "%"+keyword+"%");
		query.setParameter(2, "%"+keyword+"%");
and后面一定要加上“()”,否则查询出现的问题...后面是一个(xxx or xxx)类型的语句,它是一个整体。

你可能感兴趣的:(Hibernate)