首页 > 解决方案 > Spring JPA 大量插入复杂关系层次结构

问题描述

我有一大组数据(MDP 算法的计算结果)需要保存到关系数据库(MySQL)。

问题是,实体之间是相互关联的。层次结构类似于OptimizationRun -> State -> Action -> Transition -> State 状态数约为 11000,每次运行的操作和转换数约为 300 000。

现在,如果我采用标准的 JPA 级联路线,写入大约需要 5 分钟,因为每个状态(连同它的动作和动作的转换)都是单独编写的。我想优化关系,以利用批量插入功能。为此,我禁用了级联并尝试先保存OptimizationRun,然后是所有状态。不幸的是,在状态持续期间,我收到以下异常

org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: mdp.optimizationapp.domain.PersistentAction; nested exception is java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: mdp.optimizationapp.domain.PersistentAction

现在的问题是,如何正确安排我的层次结构,以便能够优化插入?

标签: javaspringhibernatejpaspring-data-jpa

解决方案


推荐阅读