【发布时间】:2013-05-08 15:41:29
【问题描述】:
Hibernate 说“Hibernate 抛出的异常意味着您必须回滚数据库事务并立即关闭 Session”。
当persist方法抛出SQLException并且entityManager变脏时,如果我关闭EntityManager,它仍然在Conversation Scope中。
我正在使用:tomcat 7、cdi 1.1、hibernate 4.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();
}
}
}
【问题讨论】: