Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 将实体管理器注入托管bean_Jsf 2_Jpa 2.0 - Fatal编程技术网

Jsf 2 将实体管理器注入托管bean

Jsf 2 将实体管理器注入托管bean,jsf-2,jpa-2.0,Jsf 2,Jpa 2.0,可以使用@PersistenceContext(或@PersistenceUnit)将实体管理器(或其工厂)注入到jsf托管bean中 我试过了,但什么也没有,我得到了一个NullPointerException。是的,这是可能的。这就是语法 @PersistenceContext EntityManager em; 您的项目中需要有persistence.xml。顺便说一句:我在经营玻璃鱼3 在此之后,您可以使用类似em.createNamedQuery的方法 还请记住,注入发生在构造函数之

可以使用
@PersistenceContext
(或
@PersistenceUnit
)将实体管理器(或其工厂)注入到jsf托管bean中


我试过了,但什么也没有,我得到了一个NullPointerException。

是的,这是可能的。这就是语法

@PersistenceContext
EntityManager em;
您的项目中需要有persistence.xml。顺便说一句:我在经营玻璃鱼3

在此之后,您可以使用类似em.createNamedQuery的方法


还请记住,注入发生在构造函数之后,因此,如果您试图在构造函数中执行数据库函数,这将不起作用。您必须将@PostConstruct注释添加到方法中。这可能是您遇到的问题。

请注意,如果将EntityManager注入JSF管理的bean中,则不会使用容器管理事务(CMT)。在JavaEE7之前,只有EJB使用容器管理的事务,JavaEE7只将CMT扩展到CDIBean,而不是不推荐使用的JSF管理的bean。换句话说,如果出现错误,容器将不会回滚事务:您必须自己管理该事务。五个月后,我不确定我之前的评论是否属实。我从未测试过它:我只是从我读到的东西中推断出来的-\