java - 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
现在的问题是,如何正确安排我的层次结构,以便能够优化插入?
解决方案
推荐阅读
- mdx - Mdx 中的百分比汇总
- javascript - 下载所有数据,在本地过滤或仅下载过滤后的数据
- javascript - 为什么代码中的 catch 语句没有捕获异步函数中的错误?
- c# - 我可以使用哪些方法来处理球上的软体物理
- html - 小屏幕上的引导隐藏不起作用?
- python-3.x - 如何在训练 CNN 时为 nn.Linear 层选择参数?
- android - 如何处理“地图添加折线试图抛出 OutOfMemoryError”googlemap 折线绘制
- c++ - 使用 DFS 在图中找到最小成本
- vim - 我正在尝试在 vim 上安装 vdebug,遇到 ./vim 问题
- php - 在主要受限用户而不是 www-data 下运行 PHP 是否安全?