私たちはデータベース監査のためにプロジェクトにEnversを実装していて、問題にぶつかりました。どのユーザーが変更を加えているかを判断する方法がわかりません。私が見つけることができるすべての例は、SeamとそのComponent.getInstanceテクニックを使用しています。
- Glassfish 3.1.2.2
- クロサギ2.1.13
- Hibernate4.1.6。ファイナル
これがカスタムリビジョンエンティティです
@Entity
@RevisionEntity(CustomRevisionListener.class)
public class CustomRevisionEntity {
@Id
@GeneratedValue
@RevisionNumber
private int id;
private String login;
getters/setters...
}
そして、カスタムリビジョンリスナーを出します
public class CustomRevisionListener implements RevisionListener {
@Override
public void newRevision(Object revisionEntity) {
CustomRevisionEntity rev = (CustomRevisionEntity) revisionEntity;
//how do we get the FacesContext/remote user?
rev.setLogin("unknown");
}
}
インジェクションとスコープを無駄に試しました。同様の状況のように思われるものに対して、このClassLoaderソリューションも試しましたが、getCurrentInstance()はまだnullでした。
ご協力いただきありがとうございます!