我正在尝试在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中的新事物列表上
当我遇到这个问题时,我也感到惊讶。