Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jpa namedquery,文本更改为已准备语句_Jpa_Prepared Statement_Openjpa_Named Query_Sqlperformance - Fatal编程技术网

jpa namedquery,文本更改为已准备语句

jpa namedquery,文本更改为已准备语句,jpa,prepared-statement,openjpa,named-query,sqlperformance,Jpa,Prepared Statement,Openjpa,Named Query,Sqlperformance,我有一个名为jpa(openjpa-2.2.1)的查询,它有一些硬编码的文本(例如:a.status“X”)——问题是在运行时生成的查询实际上是一个准备好的语句(a.status?) 有没有办法强制JPA按原样运行查询?(我想将其保留为namedquery,而不是以本机查询或其他方式实现) 出于性能原因,我希望按原样运行查询—静态查询在db客户机中运行大约2秒钟,而准备好的语句在3-4分钟内从JUNIT中启动。(我们过去在为某些查询准备语句时遇到性能问题,而改为静态查询就解决了这个问题)设置查询

我有一个名为jpa(openjpa-2.2.1)的查询,它有一些硬编码的文本(例如:a.status“X”)——问题是在运行时生成的查询实际上是一个准备好的语句(a.status?)

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


出于性能原因,我希望按原样运行查询—静态查询在db客户机中运行大约2秒钟,而准备好的语句在3-4分钟内从JUNIT中启动。(我们过去在为某些查询准备语句时遇到性能问题,而改为静态查询就解决了这个问题)

设置查询提示
openjpa.hint.UseLiteralInSQL=true
()。有关更多详细信息,请参阅。

您可以发布一些代码吗?引起问题的命名查询,调用它们的代码?正是我想要的答案。谢谢还有一件事——出于某种原因,提示似乎被忽略了,查询仍然以PreparedStatement的形式生成——知道我还需要做什么才能让提示正常工作吗?我相信OpenJPA将始终创建PreparedStatement。此属性应该使运行时在该语句中生成文本,而不是转换为参数。好的,但这就是问题所在-我仍然看到参数-不是文本您确定正确使用了查询提示吗?query q=getEntityManager().createNamedQuery(“namedQuery”);q、 setHint(“openjpa.hint.UseLiteralInSQL”,true);q、 getResultList());还尝试了声明方式:hints={@QueryHint(name=“openjpa.hint.UseLiteralInSQL”,value=“true”)}