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 に答える