java - 如何使用 like 和 % 进行 Hibernate 查询?

标签 java sql hibernate

我有一个像这样的 Hibernate SQL 查询:

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);

  ...
}

当我进行这样的查询时 query.list(),出现以下错误:

[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".

我可以知道如何解决这个问题吗?

最佳答案

这应该有效:

    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 + "%");

  ...
}

关于java - 如何使用 like 和 % 进行 Hibernate 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11967255/

相关文章:

java - 语法高亮

java - 如何在 Android Studio 中打印到控制台?

hibernate - Oracle 11g的Grails序列生成

hibernate - Grails/hibernate -通过两个子记录获取主数据的条件

java - 相当于在 Java 中扩展一个 final 类

java - try catch ArrayIndexOutOfBoundsException?

sql - 将 sqlite 转换为 postgres 查询

sql - 您如何找到一条链的原始 ID、第一个 ID 和最后一个 ID?

mysql - 在 SQL 中连接列

java - Hibernate Criteria 限制字段命名困惑