2015-04-02 47 views
0

我想确定我的所有Spring Data Gemfire查询是否使用在Gemfire服务器上定义的索引。如何确定Spring Data 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); 

回答

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); 

虽然你的问题给了我一些想法。我想通过注解提供进口和跟踪支持这样的...

@Trace 
@Import("example.app.domain.CustomerEntity") 
CustomerEntity findByUsername(String username); 

这将是非常优雅的和有用的。

查看新的JIRA票证(SGF-392)我提交了对此功能的支持。

谢谢!

+0

谢谢!这非常有帮助,添加这些注释将是一个好主意! – GeekChick 2015-04-07 16:19:45

相关问题