为什么SQLQuery setParameter不能使用LIKE?

Nin*_*Boy 3 java hibernate

我在这里:

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

我收到以下错误:

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

但是当我尝试:

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

它的工作.

我需要使用LIKE.

Kep*_*pil 8

你可以这样做:

Session session = getSession();
SQLQuery query = session.createSQLQuery("SELECT * FROM PERSON WHERE NAME LIKE ?");
query.setParameter(0, "%" + personName + "%");
Run Code Online (Sandbox Code Playgroud)