java—强制hibernate在db2中转义百分比和下划线符号

pbpqsu0x  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(297)

下面的查询返回 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做对呢?

mnemlml8

mnemlml81#

您必须实现一个定制的标准,如so答案中所述,或者更好,切换到jpa criteriaapi,因为hibernate原生criteriaapi已被弃用,将来将被删除。替代品是jpa标准api+hibernate扩展。

相关问题