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
Java 如何在db2动态语句缓存中解析带有参数标记的命名查询?_Java_Jpa_Db2_Eclipselink - Fatal编程技术网

Java 如何在db2动态语句缓存中解析带有参数标记的命名查询?

Java 如何在db2动态语句缓存中解析带有参数标记的命名查询?,java,jpa,db2,eclipselink,Java,Jpa,Db2,Eclipselink,我有一个包含命名查询的注释实体。查询包含3个位置参数标记 在运行时,参数被设置,并在语句存储到DB2缓存之前进行绑定。结果是缓存中充满了大量类似的SQL语句,并且每个语句都被一次又一次地绑定。 有没有一种方法可以像预处理语句那样执行namedquery,以便sql在DB2缓存中只绑定和存储一次(带问号) 我使用WLS10.2作为应用服务器,eclipselink作为持久性提供者,DB2作为数据库 我已尝试使用属性配置eclipselink 属性名称=eclipselink.jdbc.bind-p

我有一个包含命名查询的注释实体。查询包含3个位置参数标记

在运行时,参数被设置,并在语句存储到DB2缓存之前进行绑定。结果是缓存中充满了大量类似的SQL语句,并且每个语句都被一次又一次地绑定。 有没有一种方法可以像预处理语句那样执行namedquery,以便sql在DB2缓存中只绑定和存储一次(带问号)

我使用WLS10.2作为应用服务器,eclipselink作为持久性提供者,DB2作为数据库

我已尝试使用属性配置eclipselink

属性名称=eclipselink.jdbc.bind-parameters值=false

但在任何情况下,默认值都为true,SQL语句使用绑定的文本而不是?在DB2缓存中

期待任何提示或答案

谢谢。

您需要使用

属性名称=eclipselink.jdbc.bind-parameters值=true

默认情况下,false将阻止语句缓存

您还应该启用语句缓存。如果使用数据源,则需要在数据源中进行配置。如果使用EclipseLink连接池,您可以使用

属性名称=eclipselink.jdbc.cache-statements值=true