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

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)

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

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.

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 ??

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.

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