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?
Well, LIKE operator is usually used with textual data i.e. with VARCHAR or CHAR columns, and you have numeric id column (INTEGER). Maybe you could try to map id field also as string and use that field in query. This may or may not work depending on your database engine.
Keywords like SELECT, FROM, and WHERE, etc., are not case sensitive, but properties like table and column names are case sensitive in HQL.
uniqueResult. Convenience method to return a single instance that matches the query, or null if the query returns no results.
To create query in the Hibernate ORM framework, there is three different types.
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 + "%");
...
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With