我正在尝试确定我的所有Spring Data Gemfire查询是否都在使用Gemfire服务器上定义的索引。
使用OQL,我知道我可以添加&#34; <trace>
&#34;在gemfire日志中,它将显示是否正在使用索引:
@Query("<trace> SELECT c FROM /customer c, c.emailAddresses email WHERE email.emailAddress = $1")
CustomerEntity findByEmailAddress(String emailAddress);
但是我们没有定义OQL的方法怎么样呢? (假设用户名不是客户区域的密钥):
CustomerEntity findByUsername(String username);
答案 0 :(得分:0)
好问题。遗憾的是,基于名称中使用的方法名称和约定生成GemFire OQL查询的Repository方法不支持TRACE或其他OQL语句,如IMPORT。
正如您可能知道的那样,Spring Data GemFire's Repository support建立在Spring Data Commons Repository infrastructure之上,它保持了数据存储支持最广泛范围的最小公分母(关系,键值,文档等)。
但是,您可以通过设置GemFire系统属性来启用所有GemFire OQL查询的调试...
-Dgemfire.Query.VERBOSE=true
启动您的应用程序时。有关详细信息,请参阅GemFire's User Guide on Query Debugging。
不幸的是,如果你只是想跟踪你的一个OQL查询,这会更加冗长,但是会完成你想要的。
基于Repository方法在单个OQL查询中进行TRACE的唯一方法是使用上面说明的@Query注释。
@Query("<trace> SELECT c FROM /customer c, c.emailAddresses email WHERE email.emailAddress = $1")
CustomerEntity findByEmailAddress(String emailAddress);
你的问题确实给了我一些想法。我想通过这样的注释提供IMPORT和TRACE支持......
@Trace
@Import("example.app.domain.CustomerEntity")
CustomerEntity findByUsername(String username);
这将是非常优雅和有用的。
请参阅我提交的新JIRA票证(SGF-392)以添加对此功能的支持。
谢谢!