私たちはデータベース監査のためにプロジェクトに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でした。
ご協力いただきありがとうございます!