org.hibernate.TransactionException: nested transactions not supported)
Em outros topicos achei que o problema esta no Hibernate 4, nao aceita trnsaçoes "aninhadas". Como nao quero retroagir a versão do Hibernate, alguem consegue me dar um exemplo de como usar outro tipo de transação sem alterar muito o codigo? Obrigado desde já.
log completo da exceçao:org.hibernate.TransactionException: nested transactions not supported
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:152)
at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1363)
at br.com.dao.DAO.rollback(DAO.java:51)
at br.com.dao.ProfessorDAO.salvar(ProfessorDAO.java:17)
at br.com.controller.ControllerProf.salvar(ControllerProf.java:44)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:264)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:70)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Cadastro de Professores</title>
</head>
<body>
<f:view>
<h:form>
<h:outputText value="Cadastro Professores" />
<br />
<br />
<h:outputText value="Nome:" />
<h:inputText id="nome" size="60"
value="#{professorControl.professor.nome }" />
<br />
<h:outputText value="Formação Principal:" />
<h:selectOneMenu value="#{professorControl.professor.formacao }"
id="formacao">
<f:selectItem id="opt1" itemLabel="Analista de Sistemas"
itemValue="Analista de Sistemas" />
<f:selectItem id="opt2" itemLabel="Processamento de Dados"
itemValue="Processamento de Dados" />
<f:selectItem id="opt3" itemLabel="Ciencia da Computação"
itemValue="Ciencia da Computação" />
<f:selectItem id="opt4" itemLabel="Outros" itemValue="Outros" />
</h:selectOneMenu><br/><br/>
<h:commandButton action="#{professorControl.salvar }" value="Salvar" />
<h:commandButton action="cancelar" value="Cancelar" />
</h:form>
</f:view>
</body>
</html>
public class ControllerProf {
private Professor professor;
//private DataModel model;
private Map<String, Object> categoriaitem=null;
public Professor getProfessor() {
return professor;
}
public void setProfessor(Professor professor) {
this.professor = professor;
}
public Map<String, Object> getCategoriaitem() {
return categoriaitem;
}
public void setCategoriaitem(Map<String, Object> categoriaitem) {
this.categoriaitem = categoriaitem;
}
public ControllerProf(){
professor = new Professor();
}
public String salvar(){
ProfessorDAO profdao = new ProfessorDAO();
profdao.salvar(professor);
return "salvar";
}
public List<Professor> getTodos(){
ProfessorDAO profdao = new ProfessorDAO();
ArrayList<Professor> list = new ArrayList<Professor>(profdao.todosProfs());//(profdao.todosProfs());
return list;
}
public Map<String, Object> getCategorias(){
ProfessorDAO profdao = new ProfessorDAO();
categoriaitem = new LinkedHashMap<String, Object>();
for (Iterator iter = profdao.todosProfs().iterator();iter.hasNext();){
Professor p = (Professor) iter.next();
categoriaitem.put(p.getNome(), p.getNome());
}
return categoriaitem;
}
public String novocadastro(){
professor = new Professor();
return "novo";
}
}
public class ProfessorDAO extends DAO {
public void salvar(Professor professor){
try{
begin();
getSession().save(professor);
commit();
}catch (HibernateException e) {
rollback();
}
}
public List todosProfs(){
List list = getSession().createQuery("from Professor").list();
return list;
}
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Exibição de Professores</title>
</head>
<body>
<f:view>
<h:form>
<h:dataTable value="#{professorControl.todos }" var="prof" border="1">
<f:facet name="header">
<h:outputText value="Professores" />
</f:facet>
<h:column>
<f:facet name="header">
<h:outputText value="ID" />
</f:facet>
<h:outputText value="#{prof.id}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{prof.nome}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Bacharelado" />
</f:facet>
<h:outputText value="#{prof.formacao}" />
</h:column>
</h:dataTable>
<h:commandLink action="Novo" value="Novo cadastro" />
<h:commandLink action="Início" value="Página Inicial" />
</h:form>
</f:view>
</body>
</html>
Essa aí, qualquer ajuda será bem vinda. Alguem?
