占位符

Hibernate占位符使用方法注意:

例:查询语句:

String queryString = "from Resource r  where r.type.code = ?0 (and r.name like ?1 or r.tags like ?1 or r.description like ?1 or r.remark like ?1) ";

而setParam是这么写的:

Query query = entityManager.createQuery(queryString);
        setParameter(query, restricts);

protected void setParameter(Query query, Object... restricts) {
        if (restricts != null && restricts.length != 0) {
            for (int i = 0; i < restricts.length; i++) {
                query.setParameter(i + 1, restricts[i]);
            }
        }
    }

由于code给的占位符是0,而name等等给的是1,但是,总共给有两个参数。

这样,就导致query.setParameter(0+1,XX)

query.setParameter(1+1,XX)

但是没有2这个占位符。

所以要注意占位符的设置。

你可能感兴趣的:(占位符)