2013-07-08 55 views
0

错误这是我的servlet类 这里设置我的Hibernate的Session和发送的对象在哪里get和set类并调用CustomerDAO客户端类我有休眠

// star hibernate session 4.x 
    Configuration configuration = new Configuration().configure(); 
    ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()) 
    .buildServiceRegistry(); 
    SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry); 
    Session session = sessionFactory.openSession(); 


    // call the class 
    Clientes clientes = new Clientes(); 
    ClienteDAO clientedao = new ClienteDAO(); 

//send parameter to class 

    clientes.setNombre("nombre"); 
    clientes.setApellido("apellido"); 
    clientes.setTelefono("telefono"); 
    clientes.setEmail("correo"); 
    clientes.setPass("clave1"); 

     //send the parameter to dao 
    clientedao.createCliente(clientes); // error here at com.utp.soft6.RegistroSv.processRequest(RegistroSv.java:80) 

这是clientesdao的代码recive Clientes.java的参数

public class ClienteDAO { 

private Session session; 

public ClienteDAO() { 
    this.session = session; 
} 



public long createCliente(Clientes cliente) { 
    long clienteId = -1; 
    Transaction tx = null; 
    try { 
    tx = session.beginTransaction(); //error here at com.utp.soft6.model.ClienteDAO.createCliente(ClienteDAO.java:30) 

    clienteId = (Long)session.save(cliente); 
    tx.commit(); 
    } catch (Exception e) { 

    e.printStackTrace(); 
    } 
    return clienteId; 
    } 

}

时当运行aplication显示此错误

log4j:WARN No appenders could be found for logger (org.jboss.logging). 
log4j:WARN Please initialize the log4j system properly. 
Hibernate: drop table if exists clientes 
Hibernate: create table clientes (id bigint not null auto_increment, apellido varchar(255), email varchar(255), nombre varchar(255), pass varchar(255), telefono varchar(255), primary key (id)) ENGINE=InnoDB 
java.lang.NullPointerException 
    at com.utp.soft6.model.ClienteDAO.createCliente(ClienteDAO.java:30) 
    at com.utp.soft6.RegistroSv.processRequest(RegistroSv.java:80) 
    at com.utp.soft6.RegistroSv.doGet(RegistroSv.java:124) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    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:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:722) 

类中创建表,但有错误时到值根据您所提供的信息表

+0

什么是错误? – kosa

+0

对不起,这是一个错误 – Gatiko

+0

你有一个空指针异常,并说在什么行,你可以更具体地帮助我们的行:) – nachokk

回答

1

您的会话为空,你不设置它永远不会

public ClienteDAO(Session session) { 
    this.session = session; 
} 

,并在客户端代码

// call the class 
Clientes clientes = new Clientes(); 
ClienteDAO clientedao = new ClienteDAO(session); 

通过我知道你总是会说西班牙语,以便类名Clientes应该是Cliente方式单数,代表一个实体。

+0

好的,谢谢我会改名 – Gatiko

2
public ClienteDAO() { 
    this.session = session; 
} 

,似乎问题是session变量是null

您需要将hibernate session作为参数传递给构造函数(或)使用setter;

+0

谢谢是对的 – Gatiko

+0

@Gatiko:不客气。祝你好运! – kosa