如何解决通过GemfireTemplate.query方法使用HINT和TRACE
我正在尝试使用GemfireTemplate docs向query method中提到的OQL查询添加跟踪。但是OQL验证失败,并出现QueryInvalidException“意外的令牌:
解决方法
这不是SDG user@workspacexhnc27ngrq5uvvr3:/projects/challenge$ ansible-playbook mainplaybook.yml
ERROR! unexpected parameter type in action: <class 'ansible.parsing.yaml.objects.AnsibleSequence'>
The error appears to be in '/projects/challenge/fresco_loops/tasks/main.yml': line 2,column 3,but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
---
- name: install apache2,sqlite3,git
^ here
user@workspacexhnc27ngrq5uvvr3:/projects/challenge$ ansible-playbook mainplaybook.yml
ERROR! unexpected parameter type in action: <class 'ansible.parsing.yaml.objects.AnsibleSequence'>
The error appears to be in '/projects/challenge/fresco_loops/tasks/main.yml': line 2,git
^ here
的错误,也不是SDG的总体问题。
在GemFire / Geode中有两种查询方式。
-
首先,要使用post,它可以得到
QueryService
。或者,您可以获取运行OQL查询所依据的GemfireTemplate
上的QueryService
from the cache甚至是from theClientCache
。使用SDG的from thePool
时,这一切将自动为您处理。 -
查询
Region
的第二种方法是将查询“ PREDICATE”传递给Repository abstraction extension方法。
您认为Region
方法在使用哪个GemFire / Geode API?
GemfireTemplate.query(:String)
Region.query(:String)
GemfireTemplate.query(:String)
API。
Region.query(:String)
方法uses GemfireTemplate.find(:String)
。
仅QueryService
可以接受完全有效的OQL查询,例如QueryService
,其中<TRACE> SELECT * FROM /SomeRegion WHERE id = 1
方法仅接受OQL查询PREDICATE,即Region.query(:String)
。
通常将任何其他uses或OQL Query reserved words传递给id = 1
方法(以及扩展名GemfireTemplate.query(:String)
API)都会导致无效的OQL查询。
如果您想传递Region.query(:String)
,则应调用<HINT 'IDIndex',...> <TRACE> SELECT * FROM /SomeRegion WHERE id = 1 AND ...
,它使用接受完整OQL查询语法的GemFire / Geode GemfireTemplate.find(:String)
。
或者,您可以使用 Apache Geode的Spring数据(或VMware Tanzu GemFire)存储库扩展。
甚至仍然可以将HINTS,TRACES,LIMITS或其他查询功能添加到派生的存储库查询方法以及用QueryService
注释的查询方法中。有关更多详细信息,请参见query syntax。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。