2016-09-05 6 views
2

にアクセスします。監査は、私はその<strong>attibutes</strong>と、いくつかの<strong>NamedQueries</strong>で、JPAエンティティ<strong></strong>を持ってJPAエンティティ

私はいくつかの情報をログに記録しようとしている「実体が何かのために使用される任意の時間」、すなわち:

  • そのNamedQueriesのいずれかが
  • いつでも呼び出される任意の時間は、エンティティが使用されていますクエリq = em.createQuery( "SELECT .... FROM thisEntity a、otherEntity b WHERE .....");
  • いつでもその属性のいずれかが

にアクセスしている私はログに記録したい情報は、他の間で呼び出しクラス名呼び出し方法を、含まれている必要があります。

私は、これはインターセプターによって達成されなければならないと思いますが、インターセプタクラスへのアクセスは、そのNamedQueriesを投げる切片に私を許可した場合、私は、たとえばわかりません。

答えて

1

@PrePersist、@PostPersist、@PostLoad、@PreUpdate、@PostUpdate、@PreRemove、@PostRemoveなどのコールバックメソッドをエンティティクラス内で使用すると、これを達成できます。

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

例えば は、さらにあなたはリスナー・クラスでそのコールバックメソッドを使用することができます。

私の場合は、クエリに応じてコールバック@PostLoadを使用する必要があります。

希望のあるヘルプ

関連する問題