Я сохраняю данные в myRepository1 и для того, чтобы увидеть экономию с помощью материализованного представления, мне нужно обновить sh it.
myRepository1.save(myObject);
myRepository2.refreshView();
myRepository2 имеет:
@Modifying
@Query(value = "BEGIN my_refresh_view(); END;", nativeQuery = true)
void refreshView();
Где my_refresh_view - это простая хранимая процедура. Это отлично работает в реальном мире (Oracle DB) - однако, когда я запускаю свои интеграционные тесты для кода выше, используя встроенную базу данных h2, я получаю:
BEGIN my_refresh_view(); END; [42000-200]
org.springframework.dao.InvalidDataAccessResourceUsageException could not prepare statement;
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:281)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:255)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:528)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
Похоже на хранимую процедуру и h2 плохо сочетаются друг с другом.
Есть идеи, как заставить это работать, или, может быть, есть обходные пути?