[英]Stored procedure with Hibernate fails in embedded h2 database
我將數據保存到 myRepository1 並能夠通過物化視圖查看節省的內容,我需要刷新它。
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 不太匹配。
任何想法如何使它工作,或者可能有解決方法?
Hibernate JPA(至少 5.0.0 及以下)不支持 H2Dialect 的存儲過程。H2Dialect 繼承 Dialect.getCallableStatementSupport(),它返回 StandardCallableStatementSupport.NO_REF_CURSOR_INSTANCE。 標准的可調用語句支持沒有正確處理 H2 “out” 參數,該參數是 Java 返回值而不是語句參數檢查詳情
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.