[RESOLVIDO]Problema com uma consulta em Critéria HIBERNATE

5 respostas
Filipeus

Boa tarde a todos! tenho uma consulta em hibernate que pega de duas classes Demanda e Sistema. sendo que Sistema tem relaciomento com Demanda.
quando puxo uma consulta de Demanda pelo relaciomento com Sistema tomo o erro:

org.hibernate.QueryException: could not resolve property: sistema.nomeSistema of: com.brq.domain.entity.Demanda

já verifiquei o nome do atributo os gets e sets e está tudo certo. Mas continuo tomando o erro.

Vlw gente pela ajuda!

classe Demanda

public class Demanda implements Serializable {

	private static final long serialVersionUID = -7687224012522319147L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "id_demanda")
	private Integer idDemanda;

	@Column(name = "int_total_artefato", nullable = true)
	private Integer totalArtefato;

	@Column(name = "int_quantidade_retorno", nullable = true)
	private Integer quantidadeRetorno;

	@Column(name = "db_quantidade_horas", nullable = true)
	private Double quantidadeHoras;

	@Column(name = "tx_numero_demanda", length = 16, nullable = true)
	private String numeroDemanda;

	@Column(name = "tx_descricao_atividade", length = 512, nullable = true)
	private String descricaoDaAtividade;

	@Column(name = "tx_status", length = 127, nullable = true)
	private String status;

	@Column(name = "tx_etapa_qualidade", length = 127, nullable = true)
	private String etapaQualidade;

	@Column(name = "tx_artefato", length = 256, nullable = true)
	private String artefato;

	@Column(name = "tx_situacao", length = 127, nullable = true)
	private String situacao;

	@Column(name = "tx_esforco_restante_previsto", length = 128, nullable = true)
	private String esforcoRestantePrevisto;

	@Column(name = "tx_observacoes", length = 512, nullable = true)
	private String observacoes;

	@Column(name = "tx_corretiva", length = 8, nullable = true)
	private String corretiva;

	@Temporal(TemporalType.DATE)
	@Column(name = "dt_inicio", nullable = true)
	private Date dataInicio;

	@Temporal(TemporalType.DATE)
	@Column(name = "dt_fim", nullable = true)
	private Date dataFim;

	@Temporal(TemporalType.DATE)
	@Column(name = "dt_inicio_real", nullable = true)
	private Date dataInicioReal;

	@Temporal(TemporalType.DATE)
	@Column(name = "dt_fim_real", nullable = true)
	private Date dataFimReal;

	@Temporal(TemporalType.DATE)
	@Column(name = "dt_homologacao", nullable = true)
	private Date dataHomologacao;

	@Temporal(TemporalType.DATE)
	@Column(name = "dt_inicio_ajuste", nullable = true)
	private Date dataInicioAjuste;

	@Temporal(TemporalType.DATE)
	@Column(name = "dt_entraga_ajuste", nullable = true)
	private Date dataEntregaAjuste;

	@Column(name = "int_pes", nullable = true)
	private Integer pes;

	@OneToOne(targetEntity = com.brq.domain.entity.TipoRetorno.class)
	@JoinColumn(name = "id_tipo_retorno")
	private TipoRetorno tipoRetorno;

	@ManyToOne
	@JoinColumn(name = "id_sistema")
	private Sistema sistema;

		public Integer getIdDemanda() {
		return idDemanda;
	}

	public void setIdDemanda(Integer idDemanda) {
		this.idDemanda = idDemanda;
	}

	public Integer getTotalArtefato() {
		return totalArtefato;
	}

	public void setTotalArtefato(Integer totalArtefato) {
		this.totalArtefato = totalArtefato;
	}

	public Integer getQuantidadeRetorno() {
		return quantidadeRetorno;
	}

	public void setQuantidadeRetorno(Integer quantidadeRetorno) {
		this.quantidadeRetorno = quantidadeRetorno;
	}

	public Double getQuantidadeHoras() {
		return quantidadeHoras;
	}

	public void setQuantidadeHoras(Double quantidadeHoras) {
		this.quantidadeHoras = quantidadeHoras;
	}

	public String getNumeroDemanda() {
		return numeroDemanda;
	}

	public void setNumeroDemanda(String numeroDemanda) {
		this.numeroDemanda = numeroDemanda;
	}

	public String getDescricaoDaAtividade() {
		return descricaoDaAtividade;
	}

	public void setDescricaoDaAtividade(String descricaoDaAtividade) {
		this.descricaoDaAtividade = descricaoDaAtividade;
	}

	public String getStatus() {
		return status;
	}

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

	public String getEtapaQualidade() {
		return etapaQualidade;
	}

	public void setEtapaQualidade(String etapaQualidade) {
		this.etapaQualidade = etapaQualidade;
	}

	public String getArtefato() {
		return artefato;
	}

	public void setArtefato(String artefato) {
		this.artefato = artefato;
	}

	public String getSituacao() {
		return situacao;
	}

	public void setSituacao(String situacao) {
		this.situacao = situacao;
	}

	public String getEsforcoRestantePrevisto() {
		return esforcoRestantePrevisto;
	}

	public void setEsforcoRestantePrevisto(String esforcoRestantePrevisto) {
		this.esforcoRestantePrevisto = esforcoRestantePrevisto;
	}

	public String getObservacoes() {
		return observacoes;
	}

	public void setObservacoes(String observacoes) {
		this.observacoes = observacoes;
	}

	public Date getDataInicio() {
		return dataInicio;
	}

	public void setDataInicio(Date dataInicio) {
		this.dataInicio = dataInicio;
	}

	public Date getDataFim() {
		return dataFim;
	}

	public void setDataFim(Date dataFim) {
		this.dataFim = dataFim;
	}

	public Date getDataInicioReal() {
		return dataInicioReal;
	}

	public void setDataInicioReal(Date dataInicioReal) {
		this.dataInicioReal = dataInicioReal;
	}

	public Date getDataFimReal() {
		return dataFimReal;
	}

	public void setDataFimReal(Date dataFimReal) {
		this.dataFimReal = dataFimReal;
	}

	public Date getDataHomologacao() {
		return dataHomologacao;
	}

	public void setDataHomologacao(Date dataHomologacao) {
		this.dataHomologacao = dataHomologacao;
	}

	public TipoRetorno getTipoRetorno() {
		return tipoRetorno;
	}

	public void setTipoRetorno(TipoRetorno tipoRetorno) {
		this.tipoRetorno = tipoRetorno;
	}


	public String getCorretiva() {
		return corretiva;
	}

	public void setCorretiva(String corretiva) {
		this.corretiva = corretiva;
	}

	public Date getDataInicioAjuste() {
		return dataInicioAjuste;
	}

	public void setDataInicioAjuste(Date dataInicioAjuste) {
		this.dataInicioAjuste = dataInicioAjuste;
	}

	public Date getDataEntregaAjuste() {
		return dataEntregaAjuste;
	}

	public void setDataEntregaAjuste(Date dataEntregaAjuste) {
		this.dataEntregaAjuste = dataEntregaAjuste;
	}

	public Integer getPes() {
		return pes;
	}

	public void setPes(Integer pes) {
		this.pes = pes;
	}


	public Sistema getSistema() {
		return sistema;
	}


	public void setSistema(Sistema sistema) {
		this.sistema = sistema;
	}


	
}

CLASSE SISTEMA

package com.brq.domain.entity;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Column;
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 javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * 
 * JavaBean que corresponde a tabela Sistema
 * 
 */
@Entity
@Table(name = "sistema")

@NamedQueries({
	@NamedQuery(name="listar.sistema", query="select distinct new Sistema(nomeSistema) from Sistema order by tx_nome_sistema")
})

public class Sistema implements Serializable {

	
	private static final long serialVersionUID = 2084961668747162033L;
	
	@Column(name = "tx_nome_sistema", length = 128, nullable = true)
	private String nomeSistema;
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "id_sistema")
	private Integer idSistema;

	

	@Column(name = "tx_responsavel", length = 128, nullable = true)
	private String responsavel;

	@Column(name = "tx_plataforma", length = 128, nullable = true)
	private String plataforma;

	@ManyToOne
	@JoinColumn(name = "id_departamento")
	private Departamento departamento;

	@OneToMany(mappedBy="sistema")
	private List<Demanda> demandas;
	
public Integer getIdSistema() {
		return idSistema;
	}

	public void setIdSistema(Integer idSistema) {
		this.idSistema = idSistema;
	}

	public String getNomeSistema() {
		return nomeSistema;
	}

	public void setNomeSistema(String nomeSistema) {
		this.nomeSistema = nomeSistema;
	}

	public String getResponsavel() {
		return responsavel;
	}

	public void setResponsavel(String responsavel) {
		this.responsavel = responsavel;
	}

	public String getPlataforma() {
		return plataforma;
	}

	public void setPlataforma(String plataforma) {
		this.plataforma = plataforma;
	}

	public Departamento getDepartamento() {
		return departamento;
	}

	public void setDepartamento(Departamento departamento) {
		this.departamento = departamento;
	}

	public List<Demanda> getDemandas() {
		return demandas;
	}

	public void setDemandas(List<Demanda> demandas) {
		this.demandas = demandas;
	}

	
}

METODO QUE FAZ A CONSULTA
O ERRO ACONTECE NO SEGUNDO IF

public List<Demanda> getBuscarDemanda(Demanda demanda,String nomeSistema, Date dtInicial,Date dtFinal) throws Exception {
		s = HibernateUtil.getInstance();
		Criteria c = this.s.createCriteria(Demanda.class);  

		if (demanda.getNumeroDemanda() != null
				&& !"".equals(demanda.getNumeroDemanda().trim())) {
			c.add(Restrictions.ilike("numeroDemanda",
					demanda.getNumeroDemanda(), MatchMode.ANYWHERE));
		}
		

		
		
		if(nomeSistema!=null && !"".equals(nomeSistema.trim())){
			c.add(Restrictions.ilike("sistema.nomeSistema", nomeSistema));
		}
		
	
		if (demanda.getStatus() != null
				&& !"".equals(demanda.getStatus().trim())) {
			c.add(Restrictions.ilike("status", demanda.getStatus(),
					MatchMode.EXACT));
		}

		if (dtInicial != null && dtFinal!=null) {
			
			Criterion entreDatas = Restrictions.between("dataHomologacao", dtInicial, dtFinal);  
            Criterion nulldata      = Restrictions.isNull("dataHomologacao");  
            LogicalExpression orExp = Restrictions.or(entreDatas, nulldata);  
            
            c.add(orExp); 
			
	
		}
		
		if (demanda.getIdDemanda() != null) {
			c.add(Restrictions.ilike("idDemanda", demanda.getIdDemanda()));
		}
		c.addOrder(Order.asc("dataHomologacao"));
		
		return c.list();

	}

CODIGO DO ERRO

org.hibernate.QueryException: could not resolve property: sistema.nomeSistema of: com.brq.domain.entity.Demanda
	at org.hibernate.persister.entity.AbstractPropertyMapping.throwPropertyException(AbstractPropertyMapping.java:43)
	at org.hibernate.persister.entity.AbstractPropertyMapping.toColumns(AbstractPropertyMapping.java:63)
	at org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:31)
	at org.hibernate.persister.entity.AbstractEntityPersister.toColumns(AbstractEntityPersister.java:1304)
	at org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumns(CriteriaQueryTranslator.java:434)
	at org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumnsUsingProjection(CriteriaQueryTranslator.java:394)
	at org.hibernate.criterion.IlikeExpression.toSqlString(IlikeExpression.java:32)
	at org.hibernate.loader.criteria.CriteriaQueryTranslator.getWhereCondition(CriteriaQueryTranslator.java:334)
	at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:82)
	at org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:68)
	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1550)
	at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
	at com.brq.persistence.hibernate.DemandaDao.getBuscarDemanda(DemandaDao.java:100)
	at com.brq.control.RelDemandaBean.buscarDemanda(RelDemandaBean.java:73)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:70)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
	at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
	at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
	at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:532)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

5 Respostas

M

Bom, experimente fazer isso.

Criteria crit = session.createCriteria(Demanda.class);
        Criteria suppCrit = crit.createCriteria("sistema");
        suppCrit.add(Restrictions.eq("nomeSistema", nomeSistema ));
        List results = crit.list();

Boa sorte

S

Essa linha já ti fala o que esta acontecendo:

ou seja o hibernate não esta conseguindo encontrar o atributo nomeSistema dentro da sua classe Demanda , da uma olhadinha pra ve se o nome está correto.

Filipeus

Murilo_Ferreira

Funcionou !!! vlw kra !!! muito obrigado
só queria entender pq do jeito anterior não estava funcionando já que está mapeado certo!

saberia dizer ??

M

Um criteria pode refletir em apenas um tabela, por isso você precisou criar um sub-criteria para refletir na segunda tabela (que no caso é a sistema).

Se tiver mais tabelas para comprar, vai precisar criar + sub-criterias.

Bom, se já está resolvido acho que você já pode classificar o tópico como resolvido.

Filipeus

Entendi !!!
Obrigado com certeza nunca mais vou esquecer já que estava com esse erro tem 3 dias !!!
Vlw!

Criado 23 de novembro de 2011
Ultima resposta 23 de nov. de 2011
Respostas 5
Participantes 3