2013-07-08 53 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