Hibernate 说“Hibernate 抛出的异常意味着您必须回滚数据库事务并立即关闭会话”。
当persist方法抛出SQLException并且entityManager变脏时,如果我关闭EntityManager,它仍然在Conversation Scope中。
我正在使用:tomcat 7、cdi 1.1、休眠 4.1;
有什么方法可以为当前对话生成一个新的 EntityManager 来替换脏话?
@Produces
@ConversationScoped
public EntityManager create(EntityManagerFactory emf) {
EntityManager em = emf.createEntityManager();
...
视豆
@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();
}
}
}