簡體   English   中英

帶有 Hibernate 的存儲過程在嵌入式 h2 數據庫中失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM