Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/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
Jpa CDI实体管理器失败_Jpa_Cdi - Fatal编程技术网

Jpa CDI实体管理器失败

Jpa CDI实体管理器失败,jpa,cdi,Jpa,Cdi,Hibernate说,“Hibernate引发的异常意味着您必须回滚数据库事务并立即关闭会话” 当persist方法抛出SQLException并且entityManager变脏时,如果我关闭entityManager,它仍然在对话范围内 我正在使用:Tomcat7、CDI1.1、Hibernate4.1 有没有办法为当前对话生成一个新的EntityManager来替换脏的 @Produces @ConversationScoped public EntityManager create(Ent

Hibernate说,“Hibernate引发的异常意味着您必须回滚数据库事务并立即关闭会话”

当persist方法抛出SQLException并且entityManager变脏时,如果我关闭entityManager,它仍然在对话范围内

我正在使用:Tomcat7、CDI1.1、Hibernate4.1

有没有办法为当前对话生成一个新的EntityManager来替换脏的

@Produces
@ConversationScoped
public EntityManager create(EntityManagerFactory emf) {
    EntityManager em = emf.createEntityManager();

...
ViewBean

@Named @ConversationScoped 
public class MyView implements Serializable {
enter code here
@Inject @Getter private EntityManager em;
...
public void persist(){
    try{
        getEm().getTransaction().begin();
        getEm().persist(entityInstance);
        getEm().getTransaction().commit();
    }catch(Exception e){
        e.printStackTrace();
        if(getEm().getTransaction().isActive()){
            getEm().getTransaction().rollback();
        }
    }
}

不,没有。会话范围对于EntityManager来说不是一个很好的范围。由于事务边界,它实际上应该是请求或默认值