在 JPA 中,执行本机查询时,我必须将反斜杠字符转义为双反斜杠。例如,当有一个 where 子句时
UPPER(app.NAME) like UPPER(?) escape '\'
然后我需要创建一个字符串,其中包含:
UPPER(app.NAME) like UPPER(?) escape '\\'
然后我使用 openJPA 2.2.2 运行本机查询:
final EntityManager entityManager = EntityManagerFinder.getEntityManager();
final Query query = entityManager.createNativeQuery(sql, Response.class);
SQL 语句是从 XML 文件中读取的,因此这里没有进行 Java 转义。此外,我在调试过程中验证了 Java 中的字符串与 XML 文件中的字符串完全相同。
为什么 JPA 期望本机查询使用双反斜杠?这是 openJPA 中的错误吗?