SpringBoot, JPA Hibarnet paginação com Data

Como faço para trabalhar com Datas na paginação no SpringBoot ? Mesmo eu colocado tudo do tipo Date, quando faço um teste no Postman da um “Internal Server Erro”.

Minha Classe:

package com.eliveltonsantos.reservecar.domain;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

import com.eliveltonsantos.reservecar.domain.enums.Movimentacao;
import com.eliveltonsantos.reservecar.domain.enums.Status;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;

@Entity
public class Reserva implements Serializable{
	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer id;
	
	@JsonFormat(pattern="dd/MM/yyyy HH:mm")
	private Date data_hora_s;
	
	@JsonFormat(pattern="dd/MM/yyyy HH:mm")
	private Date data_hora_c;
	private String acomp;
	private String motivo;
	
	@ManyToOne
	@JoinColumn(name="carro_id")
	private Carro carro;
	
	@ManyToOne
	@JoinColumn(name="destino_id")
	private Destino destino;
	
	@JsonIgnore
	@ManyToOne
	@JoinColumn(name="motorista_id")
	private Motorista motorista;
	private Integer status;
	private Integer movimento; 
	
	public Reserva() {
	}


	public Reserva(Integer id, Date data_hora_s, Date data_hora_c, String acomp, String motivo, Carro carro,
			Destino destino, Motorista motorista, Status status, Movimentacao movimento) {
		super();
		this.id = id;
		this.data_hora_s = data_hora_s;
		this.data_hora_c = data_hora_c;
		this.acomp = acomp;
		this.motivo = motivo;
		this.carro = carro;
		this.setDestino(destino);;
		this.motorista = motorista;
		this.status = (status==null) ? null : status.getCod();
		this.movimento = (movimento==null) ? null: movimento.getCod();
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Date getData_hora_s() {
		return data_hora_s;
	}

	public void setData_hora_s(Date data_hora_s) {
		this.data_hora_s = data_hora_s;
	}

	public Date getData_hora_c() {
		return data_hora_c;
	}

	public void setData_hora_c(Date data_hora_c) {
		this.data_hora_c = data_hora_c;
	}

	public String getAcomp() {
		return acomp;
	}

	public void setAcomp(String acomp) {
		this.acomp = acomp;
	}

	public String getMotivo() {
		return motivo;
	}

	public void setMotivo(String motivo) {
		this.motivo = motivo;
	}

	public Status getStatus() {
		return Status.toEnum(status);
	}

	public void setStatus(Status status) {
		this.status = status.getCod();
	}

	public Destino getDestino() {
		return destino;
	}

	public void setDestino(Destino destino) {
		this.destino = destino;
	}
	
	public Motorista getMotoristas() {
		return motorista;
	}

	public void setMotoristas(Motorista motoristas) {
		this.motorista = motoristas;
	}

	public Carro getCarro() {
		return carro;
	}

	public void setCarro(Carro carro) {
		this.carro = carro;
	}
	
	public Movimentacao getMovimento() {
		return Movimentacao.toEnum(movimento);
	}


	public void setMovimento(Movimentacao movimento) {
		this.movimento = movimento.getCod();
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Reserva other = (Reserva) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}
}

Meu Metodo na Classe Service:

public Page<Reserva> search(Date data_hora_s, Date data_hora_c, Integer page, Integer linesPerPage, String orderBy, String direction) {
		PageRequest pageRequest = PageRequest.of(page, linesPerPage, Direction.valueOf(direction), orderBy);
		return repo.search(data_hora_s, data_hora_c, pageRequest);	
	}

Meu método de Paginação na Classe Resource:

 	@RequestMapping(method=RequestMethod.GET)
		public ResponseEntity<Page<ReservaDTO>> findPage(
				@RequestParam(value="data_hora_s", defaultValue="") Date data_hora_s, 
				@RequestParam(value="data_hora_c", defaultValue="") Date data_hora_c, 
				@RequestParam(value="page", defaultValue="0") Integer page, 
				@RequestParam(value="linesPerPage", defaultValue="24") Integer linesPerPage, 
				@RequestParam(value="orderBy", defaultValue="nome") String orderBy, 
				@RequestParam(value="direction", defaultValue="ASC") String direction) {
			Page<Reserva> list = service.search(data_hora_s, data_hora_c, page, linesPerPage, orderBy, direction);
			Page<ReservaDTO> listDto = list.map(obj -> new ReservaDTO(obj));  
			return ResponseEntity.ok().body(listDto);
		}

Minha Classe ReservaRepository:

package com.eliveltonsantos.reservecar.repositories;


import java.util.Date;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import com.eliveltonsantos.reservecar.domain.Reserva;

@Repository
public interface ReservaRepository extends JpaRepository<Reserva, Integer> {
	
	@Query("SELECT obj FROM Reserva obj WHERE obj.data_hora_s = :data_hora_s AND obj.data_hora_c = :data_hora_c")
	Page<Reserva> search(
			 @Param("data_hora_s") Date data_hora_s,
			 @Param("data_hora_c") Date data_hora_c, 
			 Pageable pageRequest);
}

O ERRO:

org.hibernate.QueryException: could not resolve property: nome of: com.eliveltonsantos.reservecar.domain.Reserva
	at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:73) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:67) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:2015) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.hql.internal.ast.tree.FromElementType.getPropertyType(FromElementType.java:407) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.hql.internal.ast.tree.FromElement.getPropertyType(FromElement.java:514) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.hql.internal.ast.tree.DotNode.getDataType(DotNode.java:697) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.hql.internal.ast.tree.DotNode.prepareLhs(DotNode.java:275) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.hql.internal.ast.tree.DotNode.resolve(DotNode.java:215) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.hql.internal.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:1045) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1290) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.orderExpr(HqlSqlBaseWalker.java:1864) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.orderExprs(HqlSqlBaseWalker.java:1661) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.orderClause(HqlSqlBaseWalker.java:1634) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:654) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:313) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:261) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:272) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:192) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:113) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:73) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:155) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:600) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:709) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:23) ~[hibernate-core-5.4.6.Final.jar:5.4.6.Final]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181]
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_181]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_181]
	at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_181]
	at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:368) ~[spring-orm-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at com.sun.proxy.$Proxy97.createQuery(Unknown Source) ~[na:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181]
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_181]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_181]
	at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_181]
	at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:314) ~[spring-orm-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at com.sun.proxy.$Proxy97.createQuery(Unknown Source) ~[na:na]
	at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.createJpaQuery(AbstractStringBasedJpaQuery.java:150) ~[spring-data-jpa-2.2.0.RELEASE.jar:2.2.0.RELEASE]
	at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.doCreateQuery(AbstractStringBasedJpaQuery.java:86) ~[spring-data-jpa-2.2.0.RELEASE.jar:2.2.0.RELEASE]
	at org.springframework.data.jpa.repository.query.AbstractJpaQuery.createQuery(AbstractJpaQuery.java:226) ~[spring-data-jpa-2.2.0.RELEASE.jar:2.2.0.RELEASE]
	at org.springframework.data.jpa.repository.query.JpaQueryExecution$PagedExecution.doExecute(JpaQueryExecution.java:175) ~[spring-data-jpa-2.2.0.RELEASE.jar:2.2.0.RELEASE]
	at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:88) ~[spring-data-jpa-2.2.0.RELEASE.jar:2.2.0.RELEASE]
	at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:154) ~[spring-data-jpa-2.2.0.RELEASE.jar:2.2.0.RELEASE]
	at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:142) ~[spring-data-jpa-2.2.0.RELEASE.jar:2.2.0.RELEASE]
	at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:618) ~[spring-data-commons-2.2.0.RELEASE.jar:2.2.0.RELEASE]
	at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:605) ~[spring-data-commons-2.2.0.RELEASE.jar:2.2.0.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80) ~[spring-data-commons-2.2.0.RELEASE.jar:2.2.0.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:353) ~[spring-tx-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:99) ~[spring-tx-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139) ~[spring-tx-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:149) ~[spring-data-jpa-2.2.0.RELEASE.jar:2.2.0.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93) ~[spring-aop-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at com.sun.proxy.$Proxy120.search(Unknown Source) ~[na:na]
	at com.eliveltonsantos.reservecar.services.ReservaService.search(ReservaService.java:58) ~[classes/:na]
	at com.eliveltonsantos.reservecar.services.ReservaService$$FastClassBySpringCGLIB$$46378542.invoke(<generated>) ~[classes/:na]
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:685) ~[spring-aop-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at com.eliveltonsantos.reservecar.services.ReservaService$$EnhancerBySpringCGLIB$$56bde90e.search(<generated>) ~[classes/:na]
	at com.eliveltonsantos.reservecar.resources.ReservaResource.findPage(ReservaResource.java:66) ~[classes/:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181]
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_181]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_181]
	at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_181]
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888) ~[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) ~[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.27.jar:9.0.27]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1579) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_181]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_181]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at java.lang.Thread.run(Unknown Source) [na:1.8.0_181]

O valor default do atributo orderBy está como nome e esse atributo não parece existir na entidade Reserva.

Obrigatoriamente tem que existir esse atributo “nome”? Eu não tenho a necessidade dele na minha entidade.

Uai, se é assim, pq ele está sendo usado no orderBy da consulta como default?

Puuuuta Mano…Eu não vi que na Classe Resource o
@RequestParam(value=“orderBy”, defaultValue=“nome”) String orderBy.

Visto que o correto é:

@RequestParam(value=“orderBy”, defaultValue=“data_hora_s”) String orderBy.

Poxa…Vlw mesmo!

Mas ainda tem um problema.

Na URL ele não aceita dados com um “espaço” se eu colocar a Data 25/10/2018 11:30 ele não aceita. Eu tenho uma classe para ajustar isso na URL com o metodo decodeParam, mas eu estou trabalhando com Datas e não com String, no caso eu teria que converter.

No Postman ele não traz a minha reserva que eu tenho salvo.

{
"content": [],
“pageable”: {
“sort”: {
“sorted”: true,
“unsorted”: false,
“empty”: false
},
“offset”: 0,
“pageNumber”: 0,
“pageSize”: 24,
“paged”: true,
“unpaged”: false
},
“totalPages”: 0,
“last”: true,
“totalElements”: 0,
“size”: 24,
“number”: 0,
“sort”: {
“sorted”: true,
“unsorted”: false,
“empty”: false
},
“numberOfElements”: 0,
“first”: true,
“empty”: true
}

E mudar minha Query para Maior e menor que a data que eu estou buscando

Você está passando a data na URL? Manda um exemplo de URL que vc está testando.

localhost:8080/reservas/?data_hora_s=25/10/2018 11:30&data_hora_c=25/10/2018 13:30

Quando for passar esse tipo de dado na URL, tem que fazer o encode. Essa data, por exemplo, ficaria assim: 25%2F10%2F2018%2011%3A30.

Então mano…

Essa é a classe que eu tenho para fazer isso pra mim.
package com.eliveltonsantos.reservecar.resources.utils;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;

public class URL {

public static String decodeParam(String s) {
	try {
		return URLDecoder.decode(s, "UTF-8");
	} catch (UnsupportedEncodingException e) {
		return "";
	}
}

public static List<Integer> decodeIntList(String s){
	String[] vet = s.split(",");
	List<Integer> list = new ArrayList<>();
	for(int i=0; i<vet.length; i++) {
		list.add(Integer.parseInt(vet[i]));
	}
	return list;
}

}

E No resource eu faço essa linha antes de passar para minha classe service e retornar.

String data_hora_sDecoded = URL.decodeParam(data_hora_s);
String data_hora_cDecoded = URL.decodeParam(data_hora_c);

Mas os meus campos são do tipo Date e o decode só é String.

O decode é para receber, o encode, como demonstrei, é para enviar, ou seja, realizar a requisição.

Mudei minha Classe URL para encode.

No meu resource

String data_hora_sEncoded = URL.encodeParam(data_hora_s);
String data_hora_cEnecoded = URL.encodeParam(data_hora_c);

The method encodeParam(String) in the type URL is not applicable for the arguments (Date)
tradução: O método encodeParam (String) no tipo URL não é aplicável aos argumentos (Data)

Vc não precisa mudar nada na sua classe resource, pois o parâmetro já é um Date, o problema é no valor enviado lah do postman. Quando vc faz a requisição no postman colocando a data com espaços, dá algum erro?

Ele da o status: 200 OK
Esse é meu retorno:

{
“content”: [],
“pageable”: {
“sort”: {
“sorted”: true,
“unsorted”: false,
“empty”: false
},
“offset”: 0,
“pageNumber”: 0,
“pageSize”: 24,
“paged”: true,
“unpaged”: false
},
“totalElements”: 0,
“totalPages”: 0,
“last”: true,
“size”: 24,
“number”: 0,
“sort”: {
“sorted”: true,
“unsorted”: false,
“empty”: false
},
“numberOfElements”: 0,
“first”: true,
“empty”: true
}

E a data chega preenchida?

Não, não chega nenhum dado preenchido! nem mesmo as outras informações.

E se vc fizer a requisição no postman com essa URL:

localhost:8080/reservas/?data_hora_s=25%2F10%2F2018%2011%3A30&data_hora_c=25%2F10%2F2018%2013%3A30

Veja se as datas serão preenchidas.

Nada, o mesmo erro!

{
“content”: [],
“pageable”: {
“sort”: {
“sorted”: true,
“unsorted”: false,
“empty”: false
},
“offset”: 0,
“pageSize”: 24,
“pageNumber”: 0,
“paged”: true,
“unpaged”: false
},
“last”: true,
“totalPages”: 0,
“totalElements”: 0,
“size”: 24,
“number”: 0,
“sort”: {
“sorted”: true,
“unsorted”: false,
“empty”: false
},
“numberOfElements”: 0,
“first”: true,
“empty”: true
}

O problema das datas não estarem sendo preenchidas, provavelmente, será por causa do formato. Defina um pattern para os parametros de data:

@RequestParam(value="data_hora_s")
@DateTimeFormat(pattern = "dd/MM/yyyy HH:mm") Date data_hora_s

Tire esse default value das datas também. Se não vier datas, eles serão nulas. Com isso, basta vc tratar na consulta msm.

1 curtida

Agora funcionou!

“content”: [
{
“id”: 1,
“data_hora_s”: “25/10/2018 14:30”,
“data_hora_c”: “25/10/2018 16:30”,
“acomp”: “Adao”,
“motivo”: “Viagem”,
“carro”: {
“id”: 1,
“nome”: “PRISMA”,
“placa”: “QQX-5212”,
“entidade”: {
“id”: 1,
“nome”: “TESTE”,
“cod_uni”: 220,
“telefones”: [
“7721034350”
]
}
},
“destino”: {
“id”: 1,
“nome”: “Centro”,
“enderecos”: [
{
“id”: 1,
“logadouro”: “Rua B”,
“numero”: “300”,
“complemento”: “Casa”,
“bairro”: “Barreirinhas”,
“cep”: “47811-003”,
“cidade”: {
“id”: 1,
“nome”: “Barreiras”,
“estado”: {
“id”: 1,
“nome”: “Bahia”
}
}
}
]
},
“motorista”: {
“id”: 1,
“nome_completo”: “Elivelton de Oliveira Santos”,
“email”: “elivelton.s@fieb.org.br”,
“setor”: {
“id”: 1,
“nome”: “TI”
},
“telefones”: [
“77999xxxxx”,
“77210xxxxx”
],
“matricula”: xxxx,
“nivel_acesso”: “ADMINISTRADOR”,
},
“status”: “RESERVADO”,
“movimento”: “PENDENTE”
}
],
“pageable”: {
“sort”: {
“sorted”: true,
“unsorted”: false,
“empty”: false
},
“offset”: 0,
“pageNumber”: 0,
“pageSize”: 24,
“paged”: true,
“unpaged”: false
},
“last”: true,
“totalPages”: 1,
“totalElements”: 1,
“size”: 24,
“number”: 0,
“sort”: {
“sorted”: true,
“unsorted”: false,
“empty”: false
},
“numberOfElements”: 1,
“first”: true,
“empty”: false
}