Спящий режим, java.lang.Исключение IllegalStateException ao tentar CreateQuery [устранено]

#java #eclipse #hibernate

Вопрос:

Я пытаюсь создать простую проблему, но когда я пытаюсь получить данные из базы данных, она попадает в исключение:

 java.lang.IllegalStateException: org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl@3304e14b is closed  org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.errorIfClosed(AbstractLogicalConnectionImplementor.java:37)  org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java:135)  org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getConnectionForTransactionManagement(LogicalConnectionManagedImpl.java:254)  org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.rollback(AbstractLogicalConnectionImplementor.java:116)  org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.rollback(JdbcResourceLocalTransactionCoordinatorImpl.java:294)  org.hibernate.engine.transaction.internal.TransactionImpl.rollback(TransactionImpl.java:145)  ef.uniceplac.users.dao.ProdutosDAO.getTodosProdutos(ProdutosDAO.java:146)  ef.uniceplac.users.controller.ProdutoServlet.listaProdutos(ProdutoServlet.java:94)  ef.uniceplac.users.controller.ProdutoServlet.doGet(ProdutoServlet.java:69)  javax.servlet.http.HttpServlet.service(HttpServlet.java:655)  javax.servlet.http.HttpServlet.service(HttpServlet.java:764)  org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)  

Я использую:

  • Затмение
  • Зимовать
  • Знаток

Мне удается вводить данные, проблема в том, когда я пытаюсь их получить. Он выполняет команду, но попадает в исключение

Мой класс дао:

 public List lt;Produtosgt; getTodosProdutos(){    Transaction transaction = null;  List lt;Produtosgt; listaDeProdutos = null;    try(Session session = HibernateUtil.getSessionFactory().openSession()){  //começa transação  transaction = session.beginTransaction();    //busca todos os produtos  listaDeProdutos = session.createQuery("from Produtos ").getResultList();    //commita transação  transaction.commit();  }catch(Exception e) {  if(transaction != null) {  transaction.rollback();  }  e.printStackTrace();  }  return listaDeProdutos;  }  

мой гибернатор.cfg.x:

 lt;?xml version="1.0" encoding="UTF-8"?gt;  lt;!DOCTYPE hibernate-configuration PUBLIC   "-//Hibernate/Hibernate Configuration DTD 3.0//EN"   "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"gt;     lt;hibernate-configurationgt;   lt;session-factorygt;   lt;!-- Database connection settings --gt;  lt;property name="hibernate.connection.driver_class"gt;com.mysql.jdbc.Driverlt;/propertygt;  lt;property name="hibernate.connection.url"gt;jdbc:mysql://localhost/formigueilt;/propertygt;  lt;property name="hibernate.connection.username"gt;rubensdimasjrlt;/propertygt;   lt;property name="hibernate.connection.password"gt;123456lt;/propertygt;       lt;!-- Echo all executed SQL to stdout --gt;  lt;property name="hibernate.dialect"gt;org.hibernate.dialect.MySQL8Dialectlt;/propertygt;   lt;property name="hibernate.show_sql"gt;truelt;/propertygt;  lt;property name="hibernate.format_sql"gt;truelt;/propertygt;    lt;!-- Mapping files --gt;   lt;mapping class="ef.uniceplac.users.dao.ProdutosDAO"/gt;  lt;mapping class="ef.uniceplac.users.model.Produtos"/gt;    lt;/session-factorygt;   lt;/hibernate-configurationgt;   

часть сервлета:

 private void listaProdutos(HttpServletRequest request, HttpServletResponse response)throws SQLException, IOException, ServletException{  List lt;Produtosgt; listaProdutos = produtosDao.getTodosProdutos();  request.setAttribute("listaProdutos", listaProdutos);    RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp");  dispatcher.forward(request, response);  }  

и мой jsp:

 lt;c:forEach var="produto" items="${listaProdutos}"gt;  lt;div class="row border-bottom"gt;  lt;div class="col-1 my-4"gt;  lt;div class="figura"gt;  lt;img src="lt;c:out value="${produto.linkImagem}" /gt;" alt="lt;c:out value="${produto.titulo}" /gt;  class="rounded"gt;  lt;/divgt;  lt;/divgt;  lt;div class="col-5 my-4 d-flex flex-column"gt;  lt;span class="fw-bolder fs-5 m-1"gt;lt;c:out value="${produto.titulo}" /gt;lt;/spangt;  lt;span class="text-muted fs-6 m-1 text-truncate"gt;${produto.descricao}lt;/spangt;  lt;/divgt;  lt;div class="col-1 my-4 mx-2 position-relative"gt;  lt;div class="col p-2 rounded-pill bg-secondary text-center position-absolute bottom-0 start-0"gt;  lt;span class="text-white fs-6 fw-bolder"gt;R$ lt;c:out value="${produto.preco}" /gt;,00lt;/spangt;  lt;/divgt;  lt;/divgt;  lt;div class="col-1 my-4 mx-2 position-relative"gt;  lt;div class="col p-2 rounded-pill bg-dark text-center position-absolute bottom-0 start-0"gt;  lt;span class="text-white fw-bolder"gt;ID: lt;c:out value="${produto.id}" /gt;lt;/spangt;  lt;/divgt;  lt;/divgt;  lt;div class="col-3 my-4 position-relative"gt;  lt;div class="mt-5 icons position-absolute bottom-0 end-0"gt;  lt;a href="edita-produto?id=lt;c:out value="${produto.id}" /gt;"gt;  lt;i class="fas fa-edit fs-6"gt;lt;/igt;  lt;/agt;  lt;a href="deleta-produto?id=lt;c:out value="${produto.id}" /gt;"gt;  lt;i class="fas fa-trash-alt fs-6 text-danger"gt;lt;/igt;  lt;/agt;  lt;/divgt;  lt;/divgt;  lt;/divgt;  lt;/c:forEachgt;  

Комментарии:

1. Это происходит в блоке catch, по-видимому, при попытке отката, но начальное исключение не отображается, поскольку откат завершается неудачно. Поэтому попробуйте посмотреть, в чем заключается первоначальное исключение

2. Гений!! Я проверил исключение и не сделал конструктор по умолчанию в своем классе, их было два с super();