Java/Spring: problema con conversione String in Date (CRUD)

di Anonimizzato23841 il
5 risposte
Buongiorno ragazzi, sto creando un semplice CRUD in Spring e sto riscontrando un problema nel fare la conversione da String in Date. Nel momento dell'esecuzione mi dà il seguente errore:

ERROR 505.Request processing failed; nested exception is java.lang.NullPointerException
java.lang.NullPointerException
java.base/java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1470)
java.base/java.text.DateFormat.parse(DateFormat.java:393)
cap.controller.UpdateController.updateCustomer(UpdateController.java:46)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.base/java.lang.reflect.Method.invoke(Method.java:567)
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:998)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:901)
javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:875)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

5 Risposte

  • Nel controller, metodo updateCustomer, guarda bene cosa fai:
    
    Date dn=(Date) (new SimpleDateFormat("dd/MM/yyyy").parse(customer.getDatanascita()));
    customer.setDatanascita((new SimpleDateFormat("dd-MM-yyyy")).format(dn));
    
    Nella prima delle due righe stai cercando di parsare un valore che non esiste (è nullo: da qui la NullPointerException). Non devi parsare il valore di customer.getDatanascita, ma la data di nascita che ti è stata passata tra i parametri del metodo.
  • Perfetto, ho risolto quell'errore. Ora mi risulta quest'altro:
    Data truncation:Incorrect date value: 12-05-1943 for colum 'Datanascita' at row 1;

    Durante l'esecuzione del programma ho inserito a Datanascita il valore 12/05/1943. Come posso risolverlo?
  • SpiritoLibero ha scritto:


    Nel controller, metodo updateCustomer, guarda bene cosa fai:
    
    Date dn=(Date) (new SimpleDateFormat("dd/MM/yyyy").parse(customer.getDatanascita()));
    customer.setDatanascita((new SimpleDateFormat("dd-MM-yyyy")).format(dn));
    
    Nella prima delle due righe stai cercando di parsare un valore che non esiste (è nullo: da qui la NullPointerException). Non devi parsare il valore di customer.getDatanascita, ma la data di nascita che ti è stata passata tra i parametri del metodo.
    Perfetto, ho risolto quell'errore. Ora mi risulta quest'altro:
    Data truncation:Incorrect date value: 12-05-1943 for colum 'Datanascita' at row 1;

    Durante l'esecuzione del programma ho inserito a Datanascita il valore 12/05/1943. Come posso risolverlo?
  • Una Data truncation solitamente riguarda il DB. Nel tuo caso ti sta dicendo che non puoi inserire una data in quel modo.
    Le date nei DB vanno scritte secondo il formato previsto dal DB: nel 99% dei casi il formato è yyyy-MM-dd mentre tu stai passando una data in formato stringa dd-MM-yyyy.
  • SpiritoLibero ha scritto:


    Una Data truncation solitamente riguarda il DB. Nel tuo caso ti sta dicendo che non puoi inserire una data in quel modo.
    Le date nei DB vanno scritte secondo il formato previsto dal DB: nel 99% dei casi il formato è yyyy-MM-dd mentre tu stai passando una data in formato stringa dd-MM-yyyy.
    Perfetto, era questo il problema. Ti ringrazio infinitamente.
Devi accedere o registrarti per scrivere nel forum
5 risposte