Hibernate错误笔记

save the transient instance before flushing

Hibernate多表操作的“一对多|多对一”中,尤其是同时再遇上存在懒加载,没准什么时候会遇上这种问题。如果本身在执行添加或更新时很容易定位,把对应的非持久化更新成原本的持久化就好了。

但有时明明只是查询,也报了该错误,而且当你发现报的那个错误对象完全跟你查询中没有任何关系的时候,不要怀疑程序在误报。

因为,你肯定在某个地方对该对象做了非持久化的赋值操作,而且该值与原始值不同。要在整个Session下寻找做改变的地方,而不仅仅是所在的查询,如果方法上使用了@Transactional,就要从最开始使用@Transactional地方找起。

当在抛出异常的位置打上断点时,发现下面两个方法中执行了n次对Session中存储的对象的查询与懒加载存储,而我们被抛出异常的对象就隐藏在这个Session存储的对象中的某个懒加载:

public void noCascade()
void org.hibernate.engine.spi.new BaseCascadingAction() {...}.cascade(EventSource session, Object child, String entityName, Object anything, boolean isCascadeDeleteEnabled) throws HibernateException

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java技术分享

50道Java线程题

1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对 ...

41610
来自专栏Android 研究

Java虚拟机基础——1Java的内存模型

最近和几个之前一起做安卓的朋友喝酒,他最近在研究JVM,我们就简单的讨论了起来,他比我研究的深很多,我也不甘堕落,自己也开始研究了一下,写了4篇文章整理了一下自...

1142
来自专栏云计算教程系列

如何在Ubuntu 16.04上设置Jupyter Notebook以运行IPython

IPython是Python的交互式命令行界面。Jupyter Notebook提供了多种语言的交互式Web界面,包括IPython。

5914
来自专栏瓜大三哥

UVM(十)之config机制

UVM(十)之config机制 1 验证平台中要配置的众多的参数 在一个验证平台中,有众多的参数需要配置。如在mac_driver中,按照以太网相关协议的规定,...

3356
来自专栏个人随笔

房上的猫:JavaDoc注释

//这是一个注释 /*   *这是一个演示程序   */ /**    *@这是JavaDoc注释。   */ JavaDoc注释    背景:       j...

36310
来自专栏JAVA高级架构

《深入理解java虚拟机-高效并发》读书笔记

Java内存模型与线程 概述   多任务处理在现代计算机操作系统中几乎已是一项必备的功能,多任务运行是压榨手段,就如windows一样,我们使劲的压榨它运行多个...

3297
来自专栏IT技术精选文摘

GoF设计模式快速指南

关于设计模式 本文主要是对原版GoF的23种设计模式提供一个快速的指南。每个模式的介绍包括了类图,讲解,使用信息和真实案例。 创造型模式(C):用于构造可与系统...

20910
来自专栏java一日一条

Java 编程要点之并发(Concurrency)详解

计算机用户想当然地认为他们的系统在一个时间可以做多件事。他们认为,他们可以工作在一个字处理器,而其他应用程序在下载文件,管理打印队列和音频流。即使是单一的应用程...

892
来自专栏Android群英传

Gradle函数复用的一点实践

1301
来自专栏CSDN技术头条

史上最难的一道Java面试题:分析篇

无意中了解到如下题目,觉得蛮好。 题目如下: ? 该程序的输出结果? 在java中,多线程的程序最难理解、调试,很多时候执行结果并不像我们想象的那样执行。所以在...

2277

扫码关注云+社区

领取腾讯云代金券