Pessoal,
Fui tentar salvar meu objeto usuario agora e me deu erro, estranho porque estava funcionando.
O erro é esse:
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Error instantiating servlet class catalogo.controle.UsuarioControle
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
java.lang.Thread.run(Thread.java:619)
root cause
java.lang.ExceptionInInitializerError
catalogo.util.HibernateUtil.
catalogo.controle.UsuarioControle.
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
java.lang.reflect.Constructor.newInstance(Constructor.java:513)
java.lang.Class.newInstance0(Class.java:355)
java.lang.Class.newInstance(Class.java:308)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
java.lang.Thread.run(Thread.java:619)
root cause
org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: catalogo.modelo.Usuario.tipoUsuarioCodigo in catalogo.modelo.TipoUsuario.usuarioCollection
org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:576)
org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:541)
org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43)
org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1130)
org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:324)
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
catalogo.util.HibernateUtil.
catalogo.controle.UsuarioControle.
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
java.lang.reflect.Constructor.newInstance(Constructor.java:513)
java.lang.Class.newInstance0(Class.java:355)
java.lang.Class.newInstance(Class.java:308)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
java.lang.Thread.run(Thread.java:619)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs
Meu servlet esta assim:
package catalogo.controle;
import catalogo.dao.GenericDAO;
import catalogo.dao.UsuarioDAO;
import catalogo.modelo.Usuario;
import catalogo.util.HibernateUtil;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
public class UsuarioControle extends HttpServlet {
private SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
private Session session = HibernateUtil.getSession();
Transaction transaction = session.beginTransaction();
private Usuario usuario;
private UsuarioDAO usuarioDao;
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
String login = request.getParameter("login");
String senha = request.getParameter("senha");
String nome = request.getParameter("nome");
String tipo = request.getParameter("tipo");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet UsuarioControle</title>");
out.println("</head>");
out.println("<body>");
out.println("Login: " + login + "<br />");
out.println("Senha: " + senha + "<br />");
out.println("Nome: " + nome + "<br />");
out.println("Tipo: " + tipo + "<br />");
out.println("</body>");
out.println("</html>");
try {
usuario = new Usuario();
usuario.setLogin(login);
usuario.setSenha(senha);
usuario.setNome(nome);
//usuario.setTipoUsuarioCodigo(null);
GenericDAO dao = new GenericDAO(session, Usuario.class);
dao.Salvar(usuario);
transaction.commit();
}
catch (Exception e) {
out.println("Nao salvou!" + e.getMessage());
}
finally {
session.flush();
session.close();
}
}
finally {
out.close();
}
}
/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}
}
Meu GenericDAO:
package catalogo.dao;
import java.util.List;
import org.hibernate.Session;
public class GenericDAO<X> {
private Class persistentClass;
protected Session session;
public GenericDAO(Session session, Class persistentClass) {
this.session = session;
this.persistentClass = persistentClass;
}
public void Salvar(X x) {
session.save(x);
}
...
}
Estou encontrando dificultades para salvar o tipo de usuario, pois no BD esta como inteiro e na minha entidade usuario esta como TipoUsuario(objketo), por isso esta comentado no codigo, se precisarem de mais alguma codigo me avisem, por favor. Acho que minah entidade e meu hibernate.cfg.xml, estao corretos por isso nao os postei