您是否知道是否可以使用springDataGemfire执行以下操作:
@Query("$1")
List<String> getQuery(String Query);
我们正在尝试构建一个动态查询,然后在GemFire上运行它
我们收到以下错误:
org. springframe.da.InvalidDataAccessApiUsageException:从Gemfire Callback返回的结果对象不是SelectResult:
问好,法里德
法里德-
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的QueryService
API直接运行传入的动态OQL查询很简单。
希望这有帮助!-约翰