在Java EE 7项目中我需要一个自定义的ConnectionProvider,它使用记录的UserId调用DB-Function,并设置为DB-Session变量。
我的问题,我无法在MyConnectionProvider中注入我的登录用户,但在所有其他Bean中也没有问题。
这是我的ConnectionProvider:
@SessionScoped
@Named
public class MyConnectionProvider implements ConnectionProvider, Configurable, Serializable {
@Inject
private Logger log;
@Inject @LoggedIn
private User currentUser = null;
这是类登录,其中currentUser已初始化:
@SessionScoped
@Named
public class Login implements Serializable
{
@Inject
private Credentials credentials;
@PersistenceContext
private EntityManager userDatabase;
private User currentUser;
//.....................................
@Produces
@LoggedIn
@Named
@SessionScoped
public User getCurrentUser()
{
return currentUser;
}
和接口LoggedIn:
@Retention(RetentionPolicy.RUNTIME)
@Target({TYPE, PARAMETER, METHOD, FIELD})
@Qualifier
public @interface LoggedIn {}
可能有人有同样的问题吗?
答案 0 :(得分:0)
Hibernate不为这些类提供任何注入支持。它们是直接实例化的,并且始终是持久性单元中的单例。
您仍然可以获得此类功能,只需使用CDI实用程序类来查找引用。 CDI.current().select(User.class, new LoggedInLiteral()).get()
其中User.class是您期望的类型的类,LoggedInLiteral
是限定符实例。