将HINT和TRACE与GemfireTemplate.query方法结合使用



我正试图使用GemfireTemplate查询方法向文档中提到的OQL查询添加Trace。但是OQL验证失败,QueryInvalidException";意外的记号:<";。有什么想法吗?

这不是SDG的GemfireTemplate的错误,也不是SDG一般的问题。

在GemFire/Geode中有两种查询方式。

  1. 首先,是使用QueryService,它可以从缓存中获得。或者,您可以从ClientCache,甚至从连接到运行OQL查询的RegionPool获得QueryService。当使用SDG的Repository抽象扩展时,这一切都会自动为您处理。

  2. 查询CCD_ 7的第二种方式是将查询";PREDICATE";到CCD_ 8方法。

您认为GemfireTemplate.query(:String)方法使用的是哪种GemFire/Geode API?

GemfireTemplate.query(:String)使用Region.query(:String)API。

GemfireTemplate.find(:String)方法使用QueryService

只有QueryService可以接受完全有效的OQL查询,例如<TRACE> SELECT * FROM /SomeRegion WHERE id = 1,其中作为Region.query(:String)方法Only接受OQL查询PREDICATE,即id = 1

传递给GemfireTemplate.query(:String)方法(并扩展为Region.query(:String)API(的任何其他OQL查询保留字或查询语法通常会导致无效的OQL查询。

如果要传递<HINT 'IDIndex', ...> <TRACE> SELECT * FROM /SomeRegion WHERE id = 1 AND ...,则应调用GemfireTemplate.find(:String),它使用接受完整OQL查询语法的GemFire/GeodeQueryService

或者,您可以使用Spring Data for Apache Geode(或VMware Tanzu GemFire(存储库扩展。

甚至还可以将HINTS、TRACES、LIMITS或其他查询工具添加到派生的Repository查询方法以及用@Query注释的查询方法中。有关更多详细信息,请参阅文档。

最新更新