In Java DateTime parsen?
Beim Hinzufügen mittels POST-Methode eines Objektes in eine Datenbank, gibt es ein Problem mit dem Datum.
Methode:
public Verteidigung addVerteidigung(Verteidigung verteidigung) throws SQLException, ClassNotFoundException {
createConnection();
String query = "INSERT INTO verteidigungen.verteidigungen "
+ "(Title, Fakultaet, Fachbereich, Raum, Tag, Uhrzeit, oeffentlich) "
+ "VALUES (?, ?, ?, ?, ?, ?, ?);";
Verteidigung v = new Verteidigung();
Statement stmt = connection.prepareStatement(query);
ResultSet rs = stmt.executeQuery(query);
v.setTitle(rs.getString("Title"));
v.setFakultaet(rs.getString("Fakultaet"));
v.setFachbereich(rs.getString("Fachbereich"));
v.setOrt(rs.getString("Raum"));
v.setWann(rs.getDate("Tag"));
v.setUhr(rs.getTime("Uhrzeit"));
v.setOeff(rs.getBoolean("oeffentlich"));
v.setTags(rs.getString("tags_tags"));
rs.close();
stmt.close();
return v;
}
Der Stacktrace befindet sich in der ersten Antwort.
3 Antworten
Stacktrace:
javax.servlet.ServletException: javax.servlet.ServletException: javax.ws.rs.ProcessingException: Error deserializing object from entity stream.
at org.eclipse.jetty.server.handler.HandlerCollection.handle (HandlerCollection.java:168)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle (HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle (Server.java:505)
at org.eclipse.jetty.server.HttpChannel.handle (HttpChannel.java:370)
at org.eclipse.jetty.server.HttpConnection.onFillable (HttpConnection.java:267)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded (AbstractConnection.java:305)
at org.eclipse.jetty.io.FillInterest.fillable (FillInterest.java:103)
at org.eclipse.jetty.io.ChannelEndPoint$2.run (ChannelEndPoint.java:117)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob (QueuedThreadPool.java:698)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run (QueuedThreadPool.java:804)
at java.lang.Thread.run (Thread.java:834)
Caused by: javax.servlet.ServletException: javax.ws.rs.ProcessingException: Error deserializing object from entity stream.
at org.glassfish.jersey.servlet.WebComponent.serviceImpl (WebComponent.java:408)
at org.glassfish.jersey.servlet.WebComponent.service (WebComponent.java:346)
at org.glassfish.jersey.servlet.ServletContainer.service (ServletContainer.java:365)
at org.glassfish.jersey.servlet.ServletContainer.service (ServletContainer.java:318)
at org.glassfish.jersey.servlet.ServletContainer.service (ServletContainer.java:205)
at org.eclipse.jetty.servlet.ServletHolder.handle (ServletHolder.java:865)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter (ServletHandler.java:1623)
at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter (WebSocketUpgradeFilter.java:214)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter (ServletHandler.java:1610)
at org.eclipse.jetty.servlet.ServletHandler.doHandle (ServletHandler.java:540)
at org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:146)
at org.eclipse.jetty.security.SecurityHandler.handle (SecurityHandler.java:548)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle (HandlerWrapper.java:132)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:257)
at org.eclipse.jetty.server.session.SessionHandler.doHandle (SessionHandler.java:1700)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:255)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle (ContextHandler.java:1345)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope (ScopedHandler.java:203)
at org.eclipse.jetty.servlet.ServletHandler.doScope (ServletHandler.java:480)
at org.eclipse.jetty.server.session.SessionHandler.doScope (SessionHandler.java:1667)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope (ScopedHandler.java:201)
at org.eclipse.jetty.server.handler.ContextHandler.doScope (ContextHandler.java:1247)
at org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:144)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle (ContextHandlerCollection.java:220)
at org.eclipse.jetty.server.handler.HandlerCollection.handle (HandlerCollection.java:152)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle (HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle (Server.java:505)
at org.eclipse.jetty.server.HttpChannel.handle (HttpChannel.java:370)
at org.eclipse.jetty.server.HttpConnection.onFillable (HttpConnection.java:267)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded (AbstractConnection.java:305)
at org.eclipse.jetty.io.FillInterest.fillable (FillInterest.java:103)
at org.eclipse.jetty.io.ChannelEndPoint$2.run (ChannelEndPoint.java:117)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob (QueuedThreadPool.java:698)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run (QueuedThreadPool.java:804)
at java.lang.Thread.run (Thread.java:834)
Caused by: javax.ws.rs.ProcessingException: Error deserializing object from entity stream.
at org.glassfish.jersey.jsonb.internal.JsonBindingProvider.readFrom (JsonBindingProvider.java:77)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.invokeReadFrom (ReaderInterceptorExecutor.java:233)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom (ReaderInterceptorExecutor.java:212)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed (ReaderInterceptorExecutor.java:132)
at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundReadFrom (MappableExceptionWrapperInterceptor.java:49)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed (ReaderInterceptorExecutor.java:132)
at org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom (MessageBodyFactory.java:1067)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity (InboundMessageContext.java:850)
at org.glassfish.jersey.server.ContainerRequest.readEntity (ContainerRequest.java:247)
at org.glassfish.jersey.server.internal.inject.EntityParamValueParamProvider$EntityValueSupplier.apply (EntityParamValueParamProvider.java:73)
at org.glassfish.jersey.server.internal.inject.EntityParamValueParamProvider$EntityValueSupplier.apply (EntityParamValueParamProvider.java:56)
at org.glassfish.jersey.server.spi.internal.ParamValueFactoryWithSource.apply (ParamValueFactoryWithSource.java:50)
at org.glassfish.jersey.server.spi.internal.ParameterValueHelper.getParameterValues (ParameterValueHelper.java:68)
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$AbstractMethodParamInvoker.getParamValues (JavaResourceMethodDispatcherProvider.java:109)
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch (JavaResourceMethodDispatcherProvider.java:219)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch (AbstractJavaResourceMethodDispatcher.java:79)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke (ResourceMethodInvoker.java:469)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply (ResourceMethodInvoker.java:391)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply (ResourceMethodInvoker.java:80)
at org.glassfish.jersey.server.ServerRuntime$1.run (ServerRuntime.java:253)
at org.glassfish.jersey.internal.Errors$1.call (Errors.java:248)
at org.glassfish.jersey.internal.Errors$1.call (Errors.java:244)
at org.glassfish.jersey.internal.Errors.process (Errors.java:292)
at org.glassfish.jersey.internal.Errors.process (Errors.java:274)
at org.glassfish.jersey.internal.Errors.process (Errors.java:244)
at org.glassfish.jersey.process.internal.RequestScope.runInScope (RequestScope.java:265)
at org.glassfish.jersey.server.ServerRuntime.process (ServerRuntime.java:232)
at org.glassfish.jersey.server.ApplicationHandler.handle (ApplicationHandler.java:679)
at org.glassfish.jersey.servlet.WebComponent.serviceImpl (WebComponent.java:392)
at org.glassfish.jersey.servlet.WebComponent.service (WebComponent.java:346)
at org.glassfish.jersey.servlet.ServletContainer.service (ServletContainer.java:365)
at org.glassfish.jersey.servlet.ServletContainer.service (ServletContainer.java:318)
at org.glassfish.jersey.servlet.ServletContainer.service (ServletContainer.java:205)
at org.eclipse.jetty.servlet.ServletHolder.handle (ServletHolder.java:865)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter (ServletHandler.java:1623)
at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter (WebSocketUpgradeFilter.java:214)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter (ServletHandler.java:1610)
at org.eclipse.jetty.servlet.ServletHandler.doHandle (ServletHandler.java:540)
at org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:146)
at org.eclipse.jetty.security.SecurityHandler.handle (SecurityHandler.java:548)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle (HandlerWrapper.java:132)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:257)
at org.eclipse.jetty.server.session.SessionHandler.doHandle (SessionHandler.java:1700)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:255)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle (ContextHandler.java:1345)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope (ScopedHandler.java:203)
at org.eclipse.jetty.servlet.ServletHandler.doScope (ServletHandler.java:480)
at org.eclipse.jetty.server.session.SessionHandler.doScope (SessionHandler.java:1667)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope (ScopedHandler.java:201)
at org.eclipse.jetty.server.handler.ContextHandler.doScope (ContextHandler.java:1247)
at org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:144)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle (ContextHandlerCollection.java:220)
at org.eclipse.jetty.server.handler.HandlerCollection.handle (HandlerCollection.java:152)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle (HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle (Server.java:505)
at org.eclipse.jetty.server.HttpChannel.handle (HttpChannel.java:370)
at org.eclipse.jetty.server.HttpConnection.onFillable (HttpConnection.java:267)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded (AbstractConnection.java:305)
at org.eclipse.jetty.io.FillInterest.fillable (FillInterest.java:103)
at org.eclipse.jetty.io.ChannelEndPoint$2.run (ChannelEndPoint.java:117)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob (QueuedThreadPool.java:698)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run (QueuedThreadPool.java:804)
at java.lang.Thread.run (Thread.java:834)
Caused by: javax.json.bind.JsonbException: Error parsing date from value: 2019-10-10
at org.eclipse.yasson.internal.serializer.AbstractDateTimeDeserializer.deserialize (AbstractDateTimeDeserializer.java:64)
at org.eclipse.yasson.internal.serializer.AbstractValueTypeDeserializer.deserialize (AbstractValueTypeDeserializer.java:64)
at org.eclipse.yasson.internal.serializer.ObjectDeserializer.deserializeNext (ObjectDeserializer.java:163)
at org.eclipse.yasson.internal.serializer.AbstractContainerDeserializer.deserializeInternal (AbstractContainerDeserializer.java:84)
at org.eclipse.yasson.internal.serializer.AbstractContainerDeserializer.deserialize (AbstractContainerDeserializer.java:60)
at org.eclipse.yasson.internal.Unmarshaller.deserializeItem (Unmarshaller.java:57)
at org.eclipse.yasson.internal.Unmarshaller.deserialize (Unmarshaller.java:50)
at org.eclipse.yasson.internal.JsonBinding.deserialize (JsonBinding.java:45)
at org.eclipse.yasson.internal.JsonBinding.fromJson (JsonBinding.java:85)
at org.glassfish.jersey.jsonb.internal.JsonBindingProvider.readFrom (JsonBindingProvider.java:75)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.invokeReadFrom (ReaderInterceptorExecutor.java:233)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom (ReaderInterceptorExecutor.java:212)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed (ReaderInterceptorExecutor.java:132)
at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundReadFrom (MappableExceptionWrapperInterceptor.java:49)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed (ReaderInterceptorExecutor.java:132)
at org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom (MessageBodyFactory.java:1067)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity (InboundMessageContext.java:850)
at org.glassfish.jersey.server.ContainerRequest.readEntity (ContainerRequest.java:247)
at org.glassfish.jersey.server.internal.inject.EntityParamValueParamProvider$EntityValueSupplier.apply (EntityParamValueParamProvider.java:73)
at org.glassfish.jersey.server.internal.inject.EntityParamValueParamProvider$EntityValueSupplier.apply (EntityParamValueParamProvider.java:56)
at org.glassfish.jersey.server.spi.internal.ParamValueFactoryWithSource.apply (ParamValueFactoryWithSource.java:50)
at org.glassfish.jersey.server.spi.internal.ParameterValueHelper.getParameterValues (ParameterValueHelper.java:68)
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$AbstractMethodParamInvoker.getParamValues (JavaResourceMethodDispatcherProvider.java:109)
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch (JavaResourceMethodDispatcherProvider.java:219)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch (AbstractJavaResourceMethodDispatcher.java:79)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke (ResourceMethodInvoker.java:469)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply (ResourceMethodInvoker.java:391)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply (ResourceMethodInvoker.java:80)
at org.glassfish.jersey.server.ServerRuntime$1.run (ServerRuntime.java:253)
at org.glassfish.jersey.internal.Errors$1.call (Errors.java:248)
at org.glassfish.jersey.internal.Errors$1.call (Errors.java:244)
at org.glassfish.jersey.internal.Errors.process (Errors.java:292)
at org.glassfish.jersey.internal.Errors.process (Errors.java:274)
at org.glassfish.jersey.internal.Errors.process (Errors.java:244)
at org.glassfish.jersey.process.internal.RequestScope.runInScope (RequestScope.java:265)
at org.glassfish.jersey.server.ServerRuntime.process (ServerRuntime.java:232)
at org.glassfish.jersey.server.ApplicationHandler.handle (ApplicationHandler.java:679)
at org.glassfish.jersey.servlet.WebComponent.serviceImpl (WebComponent.java:392)
at org.glassfish.jersey.servlet.WebComponent.service (WebComponent.java:346)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle at java.lang.Thread.run (Thread.java:834)
Caused by: java.time.format.DateTimeParseException: Text '2019-10-10' could not be parsed at index 10
at java.time.format.DateTimeFormatter.parseResolved0 (DateTimeFormatter.java:2046)
at java.time.format.DateTimeFormatter.parse (DateTimeFormatter.java:1874)
regex9. Ich muss das Datum, so parsen, dass es in die Datenbank passt. Es ist vom Datentyp her ein Date.
Die vorvorletzte Zeile im Stacktrace scheint am interessantesten:
Caused by: java.time.format.DateTimeParseException: Text '2019-10-10' could not be parsed at index 10
Prüfe mal, an welchen Stellen du in deinem Code einen Datumsstring überträgst / parsen lässt.
Moment, da passt doch einiges schon von der Logik her nicht.
- Wo verwendest du den Parameter verteidigung?
- Ich sehe nicht, wo du die Platzhalter für den SQL-Query bedienst.
Bezüglich des Datums-Format: Du musst ein anderes wählen, welches die parse-Methode annimmt. Siehe dazu hier. Eine Alternative könnte es sein, das Datum als String zu speichern oder seit Java 8 wohl besser, einen anderen Datentyp zu verwenden. Welcher sich am besten eignet, müsstest du an dieser Stelle jedoch einmal selbst recherchieren.
Ist ja mittels POST Methode.