我有一组复杂的代码,必须通过我的域并合并一些不同的实体,最终必须合并一堆其他实体。这是非平凡的代码,所以我不能给出一个例子。我遇到的问题是我得到了一个Not-null property references a null or transient value
,但我无法弄清楚究竟是哪个实体导致了这个问题。我已经查看了具有null / transient值的实体类类型,但是每当我看到它被加载时,我都没有看到任何在它们的引用中有空值或未保存的值。
到目前为止,我还没有找到一种方法来解决这个问题,以便了解hibernate认为究竟缺少应该拥有的值。如果我能找到它认为错误的对象的实例,它会给我一个线索在哪里看。
我尽可能地完成了hibernate代码,但到目前为止我还没有找到hibernate抱怨的对象实例。
作为附录,实际爆炸的呼叫稍后会出现在代码中,并且鉴于它正在抱怨的实体,正在爆炸的呼叫本身(删除呼叫)没有任何未附加的实体,我仔细检查过那。所以我认为这是一个hibernate刷新一些东西的情况,然后发现有一个问题,然后在那里爆炸,即使调用本身没有做错任何事情。
关于如何跟踪此特定对象的任何建议?
答案 0 :(得分:0)
我完全与shmosel:你的问题很模糊......
尽管如此:我认为诊断像你这样的异常的问题之一是休眠冲洗行为。您可能知道hibernate在事务结束时或者在需要时刷新会话缓存(例如,如果SELECT
语句涉及查询受尚未刷新{{1}影响的表,则hibernate需要刷新声明)。
结果当然是引发异常的时间与“生成”异常的时间没什么关系。
如果没有其他方法可用,您可以在整个代码中发送DELETE
个语句。它没有美感,但它可能会帮助你缩小问题的范围。