【问题标题】:EclipseLink error with batch fetch - NullPointerExceptionEclipseLink 批量提取错误 - NullPointerException
【发布时间】:2013-02-04 22:53:16
【问题描述】:

EclipseLink 2.3.0 - 2.3.2 上存在相同问题,但堆栈跟踪来自 2.3.0

遇到批量提取和提取连接不能很好地相互配合的问题。我有一个类似的查询

select obj from Parent
   left join fetch obj.elementCollection

带有提示eclipselink.batch = obj.oneToManyeclipselink.batch.type = IN

Parent 对象中,有一个@ElementCollection 和一个@OneToMany,其中@OneToMany 是批量获取的,@ElementCollection 是加入的(批量获取它似乎没有效果) .

它因以下错误而中断;将批处理类型从 IN 更改为 EXISTS 使其工作。

java.lang.NullPointerException
   at org.eclipse.persistence.mappings.OneToOneMapping.extractBatchKeyFromRow(OneToOneMapping.java:624)
   at org.eclipse.persistence.mappings.ForeignReferenceMapping.extractResultFromBatchQuery(ForeignReferenceMapping.java:524)
   at org.eclipse.persistence.internal.indirection.NoIndirectionPolicy.valueFromBatchQuery(NoIndirectionPolicy.java:294)
   at org.eclipse.persistence.mappings.ForeignReferenceMapping.batchedValueFromRow(ForeignReferenceMapping.java:215)

任何想法 - 我做错了什么还是这是一个错误?

【问题讨论】:

  • 快速查看eclipselink源代码后:似乎是eclipselink中的一个bug。

标签: jpa eclipselink


【解决方案1】:

请尝试 2​​.4 版本,如果错误仍然存​​在,请记录错误。

您也应该能够批量获取元素集合。如果不能,请使用测试用例记录错误。

【讨论】:

  • 当我将@ElementCollection 的“获取连接”与@OneToMany 的批量获取混合时,我确实在相同的情况下得到与2.4.x 相同的错误内”。但是,@ElementCollection 的批量获取现在可以与“IN”一起使用,因此我可以批量获取两者。我应该仍然记录一个错误,还是我不应该像那样混合批量获取和获取连接?
  • 看起来我可以使用 2.3.2 批量获取 @ElementCollection,只要我删除“获取连接”即可。所以真正的问题是无法混合 fetch-join 和 batch-fetch,或者无法混合使用 batch fetch 策略。
  • 修复版本是什么?
猜你喜欢
  • 2015-03-20
  • 2017-05-15
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多