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