在 Spring Data Repository 中刷新 Oracle Materialized 视图
Posted
技术标签:
【中文标题】在 Spring Data Repository 中刷新 Oracle Materialized 视图【英文标题】:Refresh an Oracle Materialized view in a Spring Data Repository 【发布时间】:2018-07-18 23:13:43 【问题描述】:在查询 Spring Data Repository 之前,我需要刷新 Oracle 数据库中的物化视图。我正在尝试通过具有本机查询的存储库中的函数来执行此操作,如下所示。
@Query("BEGIN DBMS_SNAPSHOT.REFRESH('MY_VIEW', 'C'); END;", nativeQuery = true)
fun refreshMaterializedView()
但是,我在调用此方法时收到java.lang.NegativeArraySizeException
,尽管直接在数据库上运行时它工作正常。我在这里做错了什么?是否有其他方法可以强制物化视图刷新?
【问题讨论】:
这可能通过@Modifying
注释实现
@JensSchauder 谢谢,这行得通!如果您想将此作为答案发布,我会接受。
【参考方案1】:
您需要使用@Modifying
注释您的方法。它确实适用于 DML 语句,但也适用于此。
@Modifying
@Query("BEGIN DBMS_SNAPSHOT.REFRESH('MY_VIEW', 'C'); END;", nativeQuery = true)
fun refreshMaterializedView()
【讨论】:
以上是关于在 Spring Data Repository 中刷新 Oracle Materialized 视图的主要内容,如果未能解决你的问题,请参考以下文章
Spring Entity Manager 和 Spring Data Repository 有啥区别?
Spring Data Redis - 对 Repository 的 @Transactional 支持
Spring Data Rest:为扩展 Revision Repository 的 Repository 公开新端点