0

我已经为 JPA (eclipselink) 实现了 DescriptorEventAdapter。它执行简单的时间戳操作。正在调用 preUpdate 方法,但是它被调用得太频繁了。它被调用并更新时间戳,即使在查找/选择操作中也是如此。

我遇到的问题似乎也发生在不同的 JPA 框架中, http://markmail.org/message/nank44rgp4xi2ita#query:JPA%20preupdate%20being%20called%20after%20find+page:1+mid: xssqpg7hm4mesfl5 +状态:结果

我试图:

  • 检查 DescriptorEvent 上的 ChangeSet,这始终为空
  • 检查 DescriptorEvent 上的代码,这始终是 6

我无法找到任何其他标志或属性显示“此对象确实已更新”。

我如何让 preUpdate 仅在记录确实被更新而不仅仅是被选中时才起作用?

4

2 回答 2

2

http://wiki.eclipse.org/Configuring_a_Descriptor_(ELUG)#Table_115-27

显然,preUpdate 一直被调用。aboutToUpdate 是在需要完成更新时调用触发的更好方法。

于 2010-02-09T22:22:41.373 回答
0

这是我在阅读此问题后提出的解决方案;我还发现 DescriptorEvent 上的 ChangeSet 似乎总是为空。

但是,我确实注意到该事件具有获取前后对象的方法:

 Object oldObject = event.getOriginalObject();
 Object newObject = event.getSource();

这将允许您手动比较字段。使用反射,您可以编写一些代码来比较任何类中的所有字段。

于 2012-05-31T10:58:19.847 回答