我正在 java hibernate 4.3 中实现预更新事件监听器。
我需要在更新发生之前获取旧的持久对象值。
我尝试在 PreUpdateEventListener 中使用 event.getOldState()
。但它给出了 Object[] 作为返回类型。我想要持久对象作为返回值。
如何在preUpdateEvent中获取完整的持久化对象? preUpdateEventListener 已正确实现。 只需要获取完整的持久对象,而不是获取 Object[]。
还尝试了event.getSession().get(id,persisted.class);
//这给出了新对象,因为 session 已经设置了要更新的新对象
下面是给出 Object[] 的代码
import org.hibernate.event.spi.PreUpdateEventListener;
import org.hibernate.event.spi.PreUpdateEvent;
public class MyEventListener implements PreUpdateEventListener {
public void onPreUpdate(PreUpdateEvent event) {
Object newEntity=event.getEntity(); //Gives new Object which will be updated.
Object[] oldEntity=evetn.getOldState(); //gives old Object[] which can't be converted to persisted Object
//Code here which will give me old persisted objects, hibernate fetches object in array format.
}
}
最佳答案
如果我没记错的话,对象数组包含给定实体的所有属性值: 关联属性的索引可以使用属性名称数组来解析
String[] propertyNames = event.getPersister().getEntityMetamodel.getPropertyNames();
这个link可能有用
关于java - 在预更新事件时获取 hibernate 持久对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26156323/