gpt4 book ai didi

java - 在 EntityListener 中注入(inject) SessionScoped Stateful bean

转载 作者:搜寻专家 更新时间:2023-10-31 20:04:45 25 4
gpt4 key购买 nike

我正在尝试在 GlassFish 3 上的 Java EE JPA (2.0) 应用程序中实现某种审计。

我在我的 @MappedSuperclass 实体上添加了一个 @EntityListeners 注释,监听器有 @PrePersist@PreUpdate 对其方法的注释,这些方法在运行时被愉快地调用。

在这些方法中,我尝试使用 (@Inject) @Named@Stateful@SessionScoped bean (UserSession) 以获取当前用户的 id。监听器类根本没有注释。

问题是我无法注入(inject) UserSession bean;我总是以 null 值结束。到这个时候,我尝试了 plain @Inject UserSession us; 它总是注入(inject)一个空值。我还尝试了 UserSession us = (UserSession) ctx.lookup( "java:global/application/module/UserSession"); 总是返回一个新对象(我验证了构造函数调用,加上对象是)。

我很确定我错过了关于 CDI 的一些非常重要的事情,但我不知道是什么。有人能给我指出正确的方向吗?

最佳答案

EntityListners 不支持 CDI,至少在 JPA 2.0 中是这样。它显然在 JPA 2.1 中的新事物列表中

当我遇到这个时,我也很惊讶。

关于java - 在 EntityListener 中注入(inject) SessionScoped Stateful bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11368662/

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