How to do Hibernate query using like and %?

hibernate, java, sql

Solution

this should work:

    public void funcA(String str) {
  StringBuilder sql = new StringBuilder();
  sql.append("select fieldA from tableA where fieldB like :searchKey");

  ...

  session.createSQLQuery(sql.toString())
  .addScalar("fieldA", StandardBasicTypes.STRING)
  .setParameter("searchKey", "%" + str + "%");

  ...
}

Problem

I have a Hibernate SQL query like this: ``` public void funcA(String str) { StringBuilder sql = new StringBuilder(); sql.append("select fieldA from tableA where fieldB like '%:searchKey%'"); ... session.createSQLQuery(sql.toString()) .addScalar("fieldA", StandardBasicTypes.STRING) .setParameter("searchKey", str); ... } ``` when I make a query like this `query.list()`, I got following error: ``` [WARNING ] SQL Error: -7, SQLState: 42601[ERROR ] The character "%" following "fieldB like" is not valid. [ERROR ] An error occurred during implicit system action type "2". Information returned for the error includes SQLCODE "-7", SQLSTATE "42601" and message tokens "%|fieldB like". ``` May I know how could I solve this problem?

Original source