Hibernate Interceptor onSave和onLoad方法返回null

时间:2014-06-23 20:14:21

标签: hibernate

我重写Hibernate EmptyInterceptor来捕获一些属性字段来做一些装饰。

公共类MyEntityInterceptor扩展EmptyInterceptor 我需要访问

保存前和阅读时的

字段。我的onSave和onLoad方法如下。但是我的

实体字段返回null。请告诉我您的反馈意见以及我在这里缺少什么?

public boolean onLoad(Object entity,Serializable id, Object[] state,String[] propertyNames, Type[] types)
        throws CallbackException{

    Persistable entity = (Persistable) entity;
    System.out.println("===============>"+entity.getCreatedBy());//returns null
    return true;
}



public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) {

    if (entity instanceof IPersistable) {
        IPersistable entity = (IPersistable) entity;
        System.out.println("Created By=================>"+((IPersistable) entity).getCreatedBy());//Returns null

    }

    return (true);
}

1 个答案:

答案 0 :(得分:0)

在初始化对象之前调用的onLoad方法。请参阅API。

http://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/Interceptor.html。实体将是

清空类的未初始化实例。这就是你得到空输出的原因。你的方式

捕获属性不正确。 Object [] state,String [] propertyNames是键

如果要处理传递参数,应使用

参数。

来了

值列表和属性名称表示字段列表。请迭代state []数组,

然后你会得到预期的价值。如果您需要进一步的帮助,请告诉我。