我试图确定是否所有Spring数据Gemfire查询都使用了在Gemfire服务器上定义的索引。
使用OQL,我知道我可以添加"<trace>“,并在gemfire日志中显示是否使用了索引:
@Query("<trace> SELECT c FROM /customer c, c.emailAddresses email WHERE email.emailAddress = $1")
CustomerEntity findByEmailAddress(String emailAddress);但是,我们没有定义OQL的方法呢,像这样呢?(假设用户名不是客户区域的键):
CustomerEntity findByUsername(String username);发布于 2015-04-03 19:10:30
问得好。不幸的是,用于根据名称中使用的方法名称和约定生成GemFire OQL查询的Repository方法不支持跟踪或其他OQL语句(如导入 )。
您可能知道,Spring数据GemFire的仓库支持构建在Spring数据共享库基础设施之上,它维护数据存储支持范围最广的最低公共分母(关系、键值、文档等)。
但是,可以通过设置GemFire系统属性为所有GemFire OQL查询启用调试.
-Dgemfire.Query.VERBOSE=true在启动应用程序时。有关更多细节,请参见GemFire查询调试用户指南。
不幸的是,如果您只想跟踪OQL查询中的一个,但会完成您想要的任务,这就稍微复杂了一些。
基于Repository方法在单个OQL查询中跟踪的唯一其他方法是使用@Query注释,如上面所示。
@Query("<trace> SELECT c FROM /customer c, c.emailAddresses email WHERE email.emailAddress = $1")
CustomerEntity findByEmailAddress(String emailAddress);不过,你的问题确实给了我一些想法。我想通过这样的注解来提供导入和跟踪支持。
@Trace
@Import("example.app.domain.CustomerEntity")
CustomerEntity findByUsername(String username);这将是非常优雅和有用的。
请参阅我为添加对此特性的支持而提交的新JIRA票据(SGF-392)。
谢谢!
https://stackoverflow.com/questions/29422032
复制相似问题