我有一个JPA 实体,其属性和几个NamedQueries。
我试图记录一些信息"任何时候实体被用于",即:
- 任何时候它的NamedQueries被调用
- 任何时候在查询中使用实体q = em.createQuery("SELECT.... . net ")FROM thisEntity a, otherEntity b WHERE.....");
- 任何时候访问它的任何属性
我想记录的信息必须包括调用程序类名和调用程序方法等。
我想这必须通过拦截器来实现,但我不确定,例如,如果拦截器允许我拦截对类抛出其NamedQueries的访问。
你可以在实体类中使用@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取决于查询。
希望对您有所帮助