Java hibernate ehcache仅查找集合的1个元素
所以,我真的在这里抓住吸管的想法。(另请注意:这是间歇性故障) 我有一个包含“子”对象集合的“父”对象:Java hibernate ehcache仅查找集合的1个元素,java,hibernate,ehcache,Java,Hibernate,Ehcache,所以,我真的在这里抓住吸管的想法。(另请注意:这是间歇性故障) 我有一个包含“子”对象集合的“父”对象: … … … … 如果我运行如下查询: “从子类子类中选择子类”+ “其中child.parent=:parent”; 它找到了所有的孩子。太好了 但是,如果我搜索父对象(并找到它),hibernate将遍历并创建我的父类,但只填充子类中的一个子类(第一个子类)。实际上,我在hibernate代码中进行了调试,发现实际上,对ParentClass上setChildren()
…
…
…
…
如果我运行如下查询: “从子类子类中选择子类”+ “其中child.parent=:parent”; 它找到了所有的孩子。太好了 但是,如果我搜索父对象(并找到它),hibernate将遍历并创建我的父类,但只填充子类中的一个子类(第一个子类)。实际上,我在hibernate代码中进行了调试,发现实际上,对ParentClass上setChildren()的调用只发送了一个1元素的集合——当我知道第一个查询中有更多元素时 所以,我使用的是EHCache,清除它并没有什么好处:调用CacheManager.getInstance().clearAll() 重新启动我的应用程序确实有效。只是在一个看似随机的父对象实例上不久它就崩溃了 据我所知,没有任何事情是直接导致这种情况的。有没有人知道会导致这种情况的hibernate bug,或者EHCache bug。我在缓存上正确地调用clear吗 任何指针都可以 我使用的是Hibernate3.2.6,mysql和postgres上也出现了同样的问题
编辑:我还应该补充一点,这个只有1个元素的集合处于一种“从不存在”的状态。也就是说,从来没有一个事务只产生一个子元素,你的子类是什么?Hibernate是否可能看到多个子类作为等价类附加到同一父类,因此只保留其中一个子类?您的子类是否存在?Hibernate是否可能看到多个子类作为等价类附加到同一父类,因此只保留其中一个子类?结果表明,在某一点上,我们在获取审阅时正在执行“连接获取”。join-fetch意味着,对于子级集合,只返回与my-where子句匹配的子级。假设我有3个children>10和1个children<10,如果我的where子句说children<10,它返回父对象,一组children只包含一个children。这很好,这就是“join fetch”的作用 错误的是Ehcache不知道这个父对象是“不完整的”,所以它将这个不完整的值存储在缓存中。下一次我想要“完整”父对象时,我得不到它,我得到的是不完整的父对象,Hibernate不会告诉我(不知道)其他情况
编辑:注意,这只是偶然的,每次它发生时,它只有一个子元素。有可能会有更多。事实证明,在某一点上,我们在获取评论时正在进行“加入获取”。join-fetch意味着,对于子级集合,只返回与my-where子句匹配的子级。假设我有3个children>10和1个children<10,如果我的where子句说children<10,它返回父对象,一组children只包含一个children。这很好,这就是“join fetch”的作用 错误的是Ehcache不知道这个父对象是“不完整的”,所以它将这个不完整的值存储在缓存中。下一次我想要“完整”父对象时,我得不到它,我得到的是不完整的父对象,Hibernate不会告诉我(不知道)其他情况
编辑:注意,这只是偶然的,每次它发生时,它只有一个子元素。可能还会有更多。很抱歉这条无聊的评论,但是
hashCode()
:)如果这些都不正确,那么(大概)会一直返回错误的子项。不过,我还是仔细检查了一下,它们是正确的。谢谢你的想法,谢谢你的无聊评论,但是如果这些都是错误的,那么它(大概)会一直返回错误的子项。不过,我还是仔细检查了一下,它们是正确的。谢谢你的主意