Методы Hibernate Interceptor OnSave и onLoad возвращают значение null

#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:

Метод onLoad вызывается непосредственно перед инициализацией объекта.Обратитесь к API.

http://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/Interceptor.html . Объект будет

пустой неинициализированный экземпляр класса. Это причина, по которой вы получаете нулевой вывод. То, как вы

свойства захвата неверны. Состояние объекта [], имена свойств строки [] являются ключевыми

параметры следует использовать, если вы хотите иметь дело с передаваемыми параметрами. Состояние приходит с

список значений и имена свойств представляют список полей. Пожалуйста, повторите state[] array ,

затем вы получите ожидаемые значения. Дайте мне знать, если вам понадобится дополнительная помощь.