2016-09-05 3 views
2

У меня есть JPA сущность, с его и атрибуты объявления нескольких NamedQueries.аудита обращается к сущности JPA

Я пытаюсь войти некоторую информацию «любое время объект используется для чего-то», то есть:

  • любое время любого из его NamedQueries вызывается
  • в любое время предприятие используется в запросе q = em.createQuery («SELECT .... FROM thisEntity a, otherEntity b WHERE .....»);
  • в любое время любой из его атрибутов доступен

информации я хочу войти должен включать имя класса INVOKER и метод INVOKER, среди других.

Я предполагаю, что это должно быть достигнуто через перехватчиков, но я не уверен, что, например, если перехватчики позволяют мне перехватывать доступы к классу бросить его NamedQueries.

ответ

1

Вы можете достичь этого, используя методы обратного вызова, такие как @PrePersist, @PostPersist, @PostLoad, @PreUpdate, @PostUpdate, @PreRemove, @PostRemove внутри классов сущностей. Например

public class EntityA { 
    ... 
    @PrePersist 
    public void beforePersist(){ 
     //Log information 
    } 
} 

Кроме того, вы можете использовать, что методы обратного вызова в классе слушателя.

public class EntityListenerA{ 
    @PrePersist 
    public void beforePersist(EntityA ob) { 
     //Log information 
    } 
} 

@EntityListeners(EntityListenerA.class) 
public class EntityA { 
    ... 
} 

В вашем случае я полагаю, что вы должны использовать обратный вызов @PostLoad в зависимости от запроса.

Надеемся, что эта помощь