gpt4 book ai didi

CDI Bean 和 Hibernate Envers

转载 作者:行者123 更新时间:2023-12-02 21:06:52 24 4
gpt4 key购买 nike

我从 Hibernate Envers 开始。我已经能够使用 @Audited 正确注释类并创建修订,但我无法使用修订记录记录的用户数据。

我的 JSF 2.0 测试应用程序正在 jbossEAP6/wildfly 服务器中的 CDI、JPA/Hibernate 上运行。我既没有使用 Spring 也没有使用 Seam。

这是一些代码:

revisionEntity.java

@Entity
@RevisionEntity(AuditListener.class)
public class RevisionEntity {
@Id
@GeneratedValue
@RevisionNumber
private int id;

@RevisionTimestamp
private long timestamp;

private String username;

LoginBean.java

@Named
@Stateful
@SessionScoped
public class LoginBean implements Serializable{

private String username;
...

AuditListener.java

import javax.ejb.Stateful;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;

import org.hibernate.envers.RevisionListener;

import br.test.login.filterlogin.beans.LoginBean;

@Named
@Stateful
@SessionScoped
public class AuditListener implements RevisionListener {

@Inject
private LoginBean loginBean;

public void newRevision(Object revisionEntity) {

RevisionEntityEx RevEntity = (RevisionEntityEx) revisionEntity;
RevEntity.setUsername(loginBean.getUsername());

}

loginBean 注入(inject)失败,给我一个 NullPointerException。有什么想法吗?

抱歉我的语法很糟糕。

问候,马塞洛。

最佳答案

监听器不受容器管理,因此您的 loginBean 不会被注入(inject)。

我们需要查找它...

注意UsuarioService 应更改为您的类型:LoginBean

import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.CDI;

BeanManager beanManager = CDI.current().getBeanManager();
Bean<UsuarioService> bean = (Bean<UsuarioService>) beanManager.getBeans(UsuarioService.class).iterator().next();
CreationalContext<UsuarioService> context = beanManager.createCreationalContext(bean);
this.usuarioService = (UsuarioService) beanManager.getReference(bean, UsuarioService.class, context);

关于CDI Bean 和 Hibernate Envers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35617633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com