java - Spring data jpa 在非常具体的场景中抛出 TransientObjectException

标签 java hibernate spring-boot spring-data-jpa

使用 spring-boot (2.1.8.RELEASE),我有一个看起来像这样的测试:

    @Test
    @Transactional
    public void myTest() {
        Company updatedCompany = companyRepository.save(company);

        em.detach(updatedCompany);

        // (1)
        companyRepository.getOne(updatedCompany.getId());

        // (2)
        companyRepository.save(updatedCompany);
    }

哪里:

  • company被初始化为域实体。
  • em是一个 EntityManager .
  • companyRepository延伸JpaRepository<Company, Long>, JpaSpecificationExecutor<Company> .

这会抛出一个 TransientObjectException在线(2) .

但是,替换行 (1)companyRepository.findById(updatedCompany.getId()).get()让一切无一异常(exception)地运行。

这不是实际测试,而是我试图理解的从我的代码中重现的问题。

更多版本:

  • spring-data-jpa: 2.1.10.RELEASE
  • hibernate 核心:5.3.11.Final
  • hibernate 实体管理器:5.3.11.Final

最佳答案

经过一些研究,似乎是由以下原因引起的:https://hibernate.atlassian.net/browse/HHH-13590 .

将hibernate-core升级到5.3.12.Final解决问题。

关于java - Spring data jpa 在非常具体的场景中抛出 TransientObjectException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58050135/

相关文章:

java - 使用 Java 中的分治法查找最大数

spring-boot - 如何追踪 infinispan NAKACK 协议(protocol)中突然出现的流量峰值?

java - 无法创建池的初始连接,无法获取 JDBC 连接错误

spring-boot - org.apache.catalina.core.StandardContext.filterStart 异常启动过滤器 [OCPsoft 重写过滤器]

java - 在 Hibernate 5.3 上获取带有 id 的实体列表

java - 从文件读取器中删除特定单词

java - JPA/Hibernate/Bean validator - 鉴别器上的@Pattern?

java - Spring/Hibernate3 的多对多关系问题

java - Spring boot Cacheable中从缓存中检索数据

java - apache commons-lang 3.0 是否在任何 Maven 仓库中可用?