如何确定 Spring Data Gemfire 查询是否正在使用 Gemfire 索引?
How can you determine whether a Spring Data Gemfire query is using a Gemfire index?
我正在尝试确定我的所有 Spring Data Gemfire 查询是否都在使用 Gemfire 服务器上定义的索引。
使用 OQL,我知道我可以添加“<trace>
”,并且在 gemfire 日志中它会显示是否正在使用索引:
@Query("<trace> SELECT c FROM /customer c, c.emailAddresses email WHERE email.emailAddress = ")
CustomerEntity findByEmailAddress(String emailAddress);
但是我们没有像这样定义 OQL 的方法呢? (假设用户名不是客户区域的密钥):
CustomerEntity findByUsername(String username);
好问题。不幸的是,基于方法名称和名称中使用的约定生成 GemFire OQL 查询的 Repository 方法不支持 TRACE 或其他 OQL 语句,如 IMPORT。
您可能已经知道,Spring Data GemFire's Repository support builds on 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 = ")
CustomerEntity findByEmailAddress(String emailAddress);
虽然你的问题确实给了我一些想法。我正在考虑通过这样的注释提供 IMPORT 和 TRACE 支持...
@Trace
@Import("example.app.domain.CustomerEntity")
CustomerEntity findByUsername(String username);
这将非常优雅和有用。
查看新的 JIRA 票证 (SGF-392) 我申请添加对此功能的支持。
谢谢!
我正在尝试确定我的所有 Spring Data Gemfire 查询是否都在使用 Gemfire 服务器上定义的索引。
使用 OQL,我知道我可以添加“<trace>
”,并且在 gemfire 日志中它会显示是否正在使用索引:
@Query("<trace> SELECT c FROM /customer c, c.emailAddresses email WHERE email.emailAddress = ")
CustomerEntity findByEmailAddress(String emailAddress);
但是我们没有像这样定义 OQL 的方法呢? (假设用户名不是客户区域的密钥):
CustomerEntity findByUsername(String username);
好问题。不幸的是,基于方法名称和名称中使用的约定生成 GemFire OQL 查询的 Repository 方法不支持 TRACE 或其他 OQL 语句,如 IMPORT。
您可能已经知道,Spring Data GemFire's Repository support builds on 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 = ")
CustomerEntity findByEmailAddress(String emailAddress);
虽然你的问题确实给了我一些想法。我正在考虑通过这样的注释提供 IMPORT 和 TRACE 支持...
@Trace
@Import("example.app.domain.CustomerEntity")
CustomerEntity findByUsername(String username);
这将非常优雅和有用。
查看新的 JIRA 票证 (SGF-392) 我申请添加对此功能的支持。
谢谢!