首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPA-存储库读访问提交外部事务

问JPA-存储库读访问提交外部事务
EN

Stack Overflow用户
提问于 2017-11-15 01:00:58
回答 1查看 157关注 0票数 0

我对Springs DB有一种奇怪的行为--事务处理,我无法理解。

给定以下代码:

代码语言:javascript
复制
    @Transactional
    public void saveDocumentToDB() {

        dbService.addNewEntity('123', 'helloWorld');
        DbEntity dbEntity = dbService.getEntityByID('someId');

        throw new RuntimeException();
    }

其中dbService是一些可以访问JPA-CrudRepository的@Service-class。

我的问题是:getEntityByID-Method反过来调用自动生成的存储库对象上的方法,提交事务,从而将第一个“添加”调用写入数据库。

如果没有这个调用,事务将很好地回滚...

你有什么建议如何让自动生成的CRUD方法也尊重事务吗?

EN

回答 1

Stack Overflow用户

发布于 2017-11-16 00:36:42

在我的application.properties中,我使用了

spring.jpa.properties.hibernate.dialect: org.hibernate.dialect.MySQL5Dialect

这导致Hibernate使用MyISAM-Engine生成表,而MyISAM-Engine不支持事务(和外键)。

我把它改成

代码语言:javascript
复制
spring.jpa.properties.hibernate.dialect: org.hibernate.dialect.MySQL5InnoDBDialect

并重建db模式。

我发现这很不直观,所谓的默认"MySQL5Dialect“使用的不是默认引擎,而是MyISAM。

也许它能在未来帮助到某个人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47291350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档