有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java强制Hibernate在DB2中转义百分号和下划线符号

以下查询返回DOC_NAME列值包含百分号的行

SELECT * FROM DOCUMENT sd WHERE DOC_NAME like lcase('%@%%') ESCAPE '@';

但是我不能强迫Hibernate做同样的事情

我已经看到了这个问题: Hibernate criteria accepting %% value 我已经编写了公认答案中建议的代码,但它似乎不适用于DB2。以下是日志的摘录:

...
where
        lcase(this_.DOC_NAME) like ?
...
2020-12-07 18:38:48,774 TRACE org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [1] as [VARCHAR] - %\%%

没有ESCAPE子句。我怎样才能强制Hibernate做对呢


共 (1) 个答案

  1. # 1 楼答案

    您必须实现SO answer中概述的自定义标准,或者更好,切换到JPA标准API,因为Hibernate本机标准API已被弃用,将来将被删除。替代品是JPA标准API+Hibernate扩展