【问题标题】:Ebean parses the first bean correctly and the rest notEbean 正确解析第一个 bean,其余的则不正确
【发布时间】:2015-09-28 14:51:40
【问题描述】:

我有两个实体之间的 oneToMany 关系,即。酒店有很多房间。当我在 ebean 中使用 fetch("rooms") 时,第一个实体正确地填充了它的孩子,而其他实体则出现“重复”。即,酒店 1 -> room1,room2,然后我得到第二个实体 hotel2 -> room3,hotel2-> room4,hotel2 -> room5。

与这个问题Ebean Finder joins @OneToMany fields in a strange way (4 results instead of 2) 的方式大致相同,我调试了 ebean 并查看了 CQuery.java 中的 checkForDifferentBean() 方法的工作原理,我了解对父实体进行排序如何帮助他。不过,这对我没有帮助。我也在使用postgresql。

第一个 bean 的 ctx.getPersistenceContext() 调用有效,从第二个开始,上下文为空,使 checkForDifferentBean() 返回 true。

【问题讨论】:

    标签: java postgresql playframework-2.0 ebean


    【解决方案1】:

    仔细查看ebean代码后,我意识到这个问题是由于框架中的错误引起的。我修复了它并打开了一个拉取请求https://github.com/ebean-orm/avaje-ebeanorm/pull/426/files

    【讨论】:

    • 供参考 - 这被记录为问题github.com/ebean-orm/avaje-ebeanorm/issues/425 ...已在 6.9.1 中修复
    • 嘿,与其将其添加为评论,不如将其添加为答案并且不接受它
    • 请注意,我确实添加了它作为答案,但版主删除了它 - 伤心。
    • 奇怪我记得你回答过,不是我删的
    • 是的,我看到它是粉红色的已删除答案(我怀疑其他人看到它)......并且可以看到不喜欢它的版主作为答案。嗯,我可能会再试一次,看看会发生什么(也许用更好的措辞)。
    【解决方案2】:

    这个问题是由于 findIterate() 的错误以及在这种情况下如何将根 bean 添加到持久性上下文中造成的。

    这已在 Ebean 6.9.1 版中得到修复,并被记录为问题 #425。

    有关测试用例、提交和其他详细信息,请参阅https://github.com/ebean-orm/avaje-ebeanorm/issues/425

    干杯,罗伯。

    【讨论】:

      猜你喜欢
      • 2011-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      • 2012-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多