在 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 关于Repository的介绍

Spring Data Redis - 对 Repository 的 @Transactional 支持

Spring Data Rest:为扩展 Revision Repository 的 Repository 公开新端点

Spring Data JPA 提供的各种Repository接口作用

如何在 Spring Data Repository Method 中使用 Regex 关键字