我访问用户使用与openjpa执行情况之下,上一个Geronimo应用程序服务器。我也使用MySQL数据库。我有一个问题与更新对象nullable日期财产。当我试图合并的实体日期的位置空,没有sql更新脚本生成(或者当其他领域的修改,sql更新脚本生成的,但日期域是ommited从它)。如果日期段设置的其他一些没有空值,更新剧本是正确地产生的。

有没有人有问题吗?

有帮助吗?

解决方案

OpenJPA使某些假设,当你离(和据推测列化)一个实体,然后将其合并。

它通常化,踢这种问题时,该实体被列化OpenJPA失去其StateManager其轨道哪些领域都载入。如果在合并实体与空值OpenJPA不是某些场曾载入并且认为它没有被改变。

有几种选择来解决这个问题:

你可以配置OpenJPA使用一个序列化StateManager-它会跟踪这些领域的你已经载入。要做到这一添加下面的财产persistence.xml.

<property name="openjpa.DetachState" value="loaded(DetachedStateField=true)"/>

或者告诉OpenJPA到负荷的一组田之前,该实体分离。OpenJPA然后将知道哪些领域现在和将处理空值正常。你的选择是载fetch的群体(一个OpenJPA概念,但是默认情况下,它载有非懒惰的领域),或者每一个领域(这可能是昂贵)。

我建议你取群体在大多数情况下,这里的酒店persistence.xml.

<property name="openjpa.DetachState" value="fetch-groups"/>

你可以做一些聪明的事情有分离的对象图的如果你那么倾斜的。OpenJPA手册有更多的信息 http://openjpa.apache.org/builds/1.2.2/apache-openjpa-1.2.2/docs/manual/manual.html#ref_guide_detach_graph

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top