带有文字的 jpa namedquery 更改为准备好的语句

jpa namedquery with literals changed to prepared statement

我有一个 jpa (openjpa-2.2.1) namedquery,它有一些硬编码文字(例如:a.status <> 'X')- 问题是在 运行生成的查询实际上是一个准备好的语句 (a.status <> ?)

有没有办法按原样强制 JPA 运行 查询?(我想将其保留为命名查询,而不是将其实现为本机查询或其他方式)

由于性能原因,我想 运行 按原样进行查询 - 数据库客户端中的静态查询 运行s 在大约 2 秒内完成,而准备好的语句在 3 秒内从 JUNIT 触发 - 4分钟(我们过去曾遇到性能问题,为某些查询准备了语句,改用静态查询就可以解决问题)

设置查询提示openjpa.hint.UseLiteralInSQL=trueref). See this IBM technote了解更多详情。