4

我在这里:

Session session = getSession();
SQLQuery query = session.createSQLQuery("SELECT * FROM PERSON WHERE NAME LIKE '%?%'");
query.setParameter(0, personName);

我收到以下错误:

java.lang.IndexOutOfBoundsException:记住序数参数是从 1 开始的!

但是当我尝试时:

Session session = getSession();
SQLQuery query = session.createSQLQuery("SELECT * FROM PERSON WHERE NAME = ?");
query.setParameter(0, personName);

它的工作。

我需要使用 LIKE。

4

3 回答 3

10

你可以这样做:

Session session = getSession();
SQLQuery query = session.createSQLQuery("SELECT * FROM PERSON WHERE NAME LIKE ?");
query.setParameter(0, "%" + personName + "%");
于 2012-07-17T06:41:36.397 回答
3

用户标准为

Criteria criteria = getSession().createCriteria(Person.class);
criteria.add(Restrictions.like("name", personName, MatchMode.ANYWHERE));
criteria.list();
于 2012-07-17T06:42:50.857 回答
-2
String strQuery = "SELECT * FROM PERSON WHERE upper(NAME) LIKE '%"
                + personName.trim().toUpperCase()  + "%'";

Session session = getSession();

SQLQuery query = session.createSQLQuery(strQuery );
于 2012-07-17T06:56:36.963 回答