栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring Boot + Hibernate + JPA没有可用的事务性EntityManager

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot + Hibernate + JPA没有可用的事务性EntityManager

首先,我引用Spring-Data JPA文档来说明为什么该

delete
方法在您的情况下有效(我的意思是选项 2
)。

默认情况下,存储库实例上的CRUD方法是事务性的。对于读取操作,将事务配置

readOnly
标志设置为true,所有其他标志都配置为纯文本,
@Transactional
以便应用默认事务配置。有关详细信息,请参见CrudRepository的JavaDoc。

delete
方法实际上是的方法
CrudRepository
。您的存储库
JpaRepository
可以扩展
CrudRespository
,而扩展则可以扩展,因此它属于CrudRepository接口,并且根据上面的引用是事务性的。

如果阅读了“ 事务性查询方法 ”一节,您将看到与选项
4 相同的内容,并且您将知道如何对存储库的所有方法应用自定义事务行为。此外,文档的 示例61 显示了与选项 3 相同的场景。

现在请记住,您不是在使用JDBC逻辑,在这种情况下,数据库会处理事务,但要在基于ORM的框架中进行。ORM框架需要事务才能触发对象高速缓存和数据库之间的同步。因此,您必须了解并为执行ORM逻辑的方法提供事务上下文

deleteByCustomerId

默认情况下

@Transactional
(我的意思是没有任何参数)将传播模式设置
REQUIRED
为false,将readOnly标志设置为false。调用其中注释的方法时,如果不存在任何事务,则会初始化事务。这就是为什么的原因,
解决办法 @LucasSaldanha的(同例如 使用一个门面来定义多个库调用交易 )和选项 4个 作品。否则,如果没有事务,您将陷入选项
1 的抛出异常。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/382817.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号