Alguem me ajuda a fazer essa consulta em JPQL

3 respostas
jpqljsfjava
Dayson_Rodrigues

Quero fazer um between de datas, e passar uma String que seria uma placa do veiculo.

Minha Model

@Entity
@Data
public class Servico {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long codigo;

	@NotNull
	@Column(name = "dia_servico")
	@Temporal(TemporalType.DATE)
	private Date diaServico;

	@NotNull
	@Column(name = "dia_garantia")
	@Temporal(TemporalType.DATE)
	private Date diaGarantia;

	@NotNull
	@NotBlank
	@Column(name = "descricao_servico", length = 255)
	private String descricaoServico;

	@OneToOne(cascade = CascadeType.ALL) //Se estiver Salvando ou apagando, salva ou  deleta a entidade TipoServico Junto ao Servico
	@JoinColumn(name = "codigo_tipo_sevico")
	private TipoServico tipoServico;

	@Enumerated(EnumType.STRING)
	@Column(name = "status_servico")
	private StatusServico statusServico;

	@Enumerated(EnumType.STRING)
	@Column(name="tipo_pagamento")
	private Pagamento pagamento;

	
	@Column(name="valor",nullable = false, precision = 10, scale =2)
	private BigDecimal valor = BigDecimal.ZERO;
	@Column(name="desconto",nullable = false, precision = 10, scale =2)
	private BigDecimal desconto= BigDecimal.ZERO;
	@Min(value=0)
	@Column(name="total_com_desconto",nullable = false, precision = 10, scale =2)
	private BigDecimal totalComDesconto= BigDecimal.ZERO;
	@Column(columnDefinition="text")
	private String observacao;

	@ManyToOne
	@JoinColumn(name = "codigo_carro")
	private Carro carro;

	@ManyToOne
	@JoinColumn(name="codigo_cliente")
	private Cliente cliente; 

Entidade Carro
    @Entity
@Data
public class Carro {

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Long codigo;
	
	@NotBlank
	@NotNull
	@Pattern(regexp="([a-zA-Z]{3}-\\d{4})?")
	@Size(max=8) 
	@Column(unique = true,nullable = false , length=8)
	private String placa;

3 Respostas

L

String jpql = "SELECT object FROM Classe object WHERE object.atributoData BETWEEN :dataInicio AND :dataFim AND object.atributoPlacaDoVeiculo = :placaDoVeiculo";

Agora ficou fácil, né?

Dayson_Rodrigues

Estou quebrando cabeça aqui, meu codigo está assim

DAO

public List buscarServicoDeVeiculoEntreDatas(Date diaInicio, Date diaFim, Carro carro) {

return manager.createQuery("SELECT s FROM Servico s WHERE s.dataServico BETWEEN :dataInicio AND :dataFim AND s.carro.placa = :placaDoVeiculo",Servico.class)
	    			   .setParameter("dataInicio", diaInicio)
	    			   .setParameter("dataFim", diaFim)
	    			   .setParameter("placaDoVeiculo", carro.getPlaca()).getResultList();
	}

Service

public List<Servico> buscarServicoEntreDatas(Date diaServico, Date diaGarantia, Carro placa) {
		return servicoDAO.buscarServicoDeVeiculoEntreDatas(diaServico,diaGarantia,placa);
	}

Controller

@Getter
	@Setter
	private Carro carro;
	@Getter
	@Setter
	Date dataInicio;
	@Getter
	@Setter
	Date DataFim;

	@Getter
	private List<Servico> servicos;

	public List<Servico> buscaServicoDeVeiculoEntreDatas() {
		return servicoService.buscarServicoEntreDatas(dataInicio, DataFim, carro);		
	}

Erro

ADVERTÊNCIA: #{consultaServico.buscaServicoDeVeiculoEntreDatas}: java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: dataServico of: com.irmaosuspension.controleservico.modelo.Servico [SELECT s FROM com.irmaosuspension.controleservico.modelo.Servico s WHERE s.dataServico BETWEEN :dataInicio AND :dataFim AND s.carro.placa = :placaDoVeiculo]
javax.faces.FacesException: #{consultaServico.buscaServicoDeVeiculoEntreDatas}: java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: dataServico of: com.irmaosuspension.controleservico.modelo.Servico [SELECT s FROM com.irmaosuspension.controleservico.modelo.Servico s WHERE s.dataServico BETWEEN :dataInicio AND :dataFim AND s.carro.placa = :placaDoVeiculo]
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:495)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:767)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1347)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:745)
Caused by: javax.faces.el.EvaluationException: java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: dataServico of: com.irmaosuspension.controleservico.modelo.Servico [SELECT s FROM com.irmaosuspension.controleservico.modelo.Servico s WHERE s.dataServico BETWEEN :dataInicio AND :dataFim AND s.carro.placa = :placaDoVeiculo]
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	... 29 more
Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: dataServico of: com.irmaosuspension.controleservico.modelo.Servico [SELECT s FROM com.irmaosuspension.controleservico.modelo.Servico s WHERE s.dataServico BETWEEN :dataInicio AND :dataFim AND s.carro.placa = :placaDoVeiculo]
	at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1679)
	at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602)
	at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1608)
	at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:313)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:38)
	at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:100)
	at org.jboss.weldx.persistence.EntityManager$280201877$Proxy$_$$_WeldClientProxy.createQuery(Unknown Source)
	at com.irmaosuspension.controleservico.dao.ServicoDAO.buscarServicoDeVeiculoEntreDatas(ServicoDAO.java:101)
	at com.irmaosuspension.controleservico.dao.ServicoDAO$Proxy$_$$_WeldSubclass.buscarServicoDeVeiculoEntreDatas(Unknown Source)
	at com.irmaosuspension.controleservico.service.ServicoService.buscarServicoEntreDatas(ServicoService.java:49)
	at com.irmaosuspension.controleservico.controller.ConsultaServico.buscaServicoDeVeiculoEntreDatas(ConsultaServico.java:59)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
	at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
	at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
	... 30 more
Caused by: org.hibernate.QueryException: could not resolve property: dataServico of: com.irmaosuspension.controleservico.modelo.Servico [SELECT s FROM com.irmaosuspension.controleservico.modelo.Servico s WHERE s.dataServico BETWEEN :dataInicio AND :dataFim AND s.carro.placa = :placaDoVeiculo]
	at org.hibernate.QueryException.generateQueryException(QueryException.java:120)
	at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:103)
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:218)
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142)
	at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:115)
	at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:76)
	at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:150)
	at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:302)
	at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:240)
	at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1907)
	at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:305)
	... 51 more
Caused by: org.hibernate.QueryException: could not resolve property: dataServico of: com.irmaosuspension.controleservico.modelo.Servico
	at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:62)
	at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:56)
	at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1788)
	at org.hibernate.hql.internal.ast.tree.FromElementType.getPropertyType(FromElementType.java:393)
	at org.hibernate.hql.internal.ast.tree.FromElement.getPropertyType(FromElement.java:505)
	at org.hibernate.hql.internal.ast.tree.DotNode.getDataType(DotNode.java:660)
	at org.hibernate.hql.internal.ast.tree.DotNode.prepareLhs(DotNode.java:264)
	at org.hibernate.hql.internal.ast.tree.DotNode.resolve(DotNode.java:204)
	at org.hibernate.hql.internal.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:109)
	at org.hibernate.hql.internal.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:104)
	at org.hibernate.hql.internal.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:1013)
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1286)
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4713)
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:4443)
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2130)
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2055)
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:813)
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:607)
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:311)
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:259)
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:262)
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:190)
	... 59 more

abr 10, 2017 10:35:02 AM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
GRAVE: javax.faces.el.EvaluationException: java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: dataServico of: com.irmaosuspension.controleservico.modelo.Servico [SELECT s FROM com.irmaosuspension.controleservico.modelo.Servico s WHERE s.dataServico BETWEEN :dataInicio AND :dataFim AND s.carro.placa = :placaDoVeiculo]
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:495)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:767)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1347)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: dataServico of: com.irmaosuspension.controleservico.modelo.Servico [SELECT s FROM com.irmaosuspension.controleservico.modelo.Servico s WHERE s.dataServico BETWEEN :dataInicio AND :dataFim AND s.carro.placa = :placaDoVeiculo]
	at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1679)
	at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602)
	at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1608)
	at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:313)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:38)
	at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:100)
	at org.jboss.weldx.persistence.EntityManager$280201877$Proxy$_$$_WeldClientProxy.createQuery(Unknown Source)
	at com.irmaosuspension.controleservico.dao.ServicoDAO.buscarServicoDeVeiculoEntreDatas(ServicoDAO.java:101)
	at com.irmaosuspension.controleservico.dao.ServicoDAO$Proxy$_$$_WeldSubclass.buscarServicoDeVeiculoEntreDatas(Unknown Source)
	at com.irmaosuspension.controleservico.service.ServicoService.buscarServicoEntreDatas(ServicoService.java:49)
	at com.irmaosuspension.controleservico.controller.ConsultaServico.buscaServicoDeVeiculoEntreDatas(ConsultaServico.java:59)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
	at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
	at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
	... 30 more
L

Primeiro: leia a mensagem de erro e tente entendê-la

could not resolve property: dataServico of: com.irmaosuspension.controleservico.modelo.Servico [SELECT s FROM com.irmaosuspension.controleservico.modelo.Servico s WHERE s.dataServico BETWEEN :dataInicio AND :dataFim AND s.carro.placa = :placaDoVeiculo]

Date dataInicio;

Consegue ver onde errou?

Criado 10 de abril de 2017
Ultima resposta 10 de abr. de 2017
Respostas 3
Participantes 2