提问者:小点点

Spring数据GemFire OQL


您是否知道是否可以使用springDataGemfire执行以下操作:

@Query("$1")
List<String> getQuery(String Query);

我们正在尝试构建一个动态查询,然后在GemFire上运行它

我们收到以下错误:

org. springframe.da.InvalidDataAccessApiUsageException:从Gemfire Callback返回的结果对象不是SelectResult:

问好,法里德


共1个答案

匿名用户

法里德-

SD的[G]存储库基础结构和扩展,特别是使用@Query注释的显式OQL查询,从未打算以这种方式使用。

本质上,您正在尝试使用SD存储库基础结构来运行“即席”GemFire OQL查询,因此,为什么不直接使用Gemfire Template,甚至使用GemFire的QueryServiceAPI?

当JDBC直接(或Spring的JdbcTemplate)更适合高级查询功能时,您尝试做的类似于将Hibernate用于映射和普通查询之外的复杂查询(这不是Hibernate的真正目的)。

不过,仍然可以使用混合方法,其中“提供”的SD存储库基础架构处理应用程序的大部分数据访问模式(例如CRUD、简单查询等),并将其与“自定义”存储库实现相结合。

在我的SDG联系人应用程序RI中,我有一个这样的“自定义”存储库实现的示例。CustomerRepository扩展了CustomerRepositoryExency,它在CustomerRepositoryImpl类中实现。SD的存储库基础结构在为CustomerRepository接口创建存储库代理时采用了这个“自定义”实现。在这种情况下,我让“自定义存储库数据访问/查询方法调用了一个GemFire函数(可以在这里看到)。

在您的例子中,使用SDGGemfire Template或GemFire的QueryServiceAPI直接运行传入的动态OQL查询很简单。

希望这有帮助!-约翰