我正在尝试在GlassFish 3的Java EE JPA应用程序中实施某种审核。

我在@EntityListeners实体上添加了@MappedSuperclass批注,侦听器在其方法上具有@PrePersist@PreUpdate批注,这些批注在运行时很容易被调用。

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

问题是我无法注入UserSession bean。我总是以null值结尾。到现在为止,我尝试了一个纯@Inject UserSession us;,它总是注入一个空值;我也尝试了UserSession us = (UserSession) ctx.lookup("java:global/application/module/UserSession");,它总是返回一个新对象(我验证了构造函数调用,加上该对象为空)。

我很确定我错过了一些有关CDI的重要信息,但我不知道是什么。有人可以指出我正确的方向吗?

最佳答案

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

当我遇到这个问题时,我也感到惊讶。

08-26 23:49