Hibernate não encontra parametro no criteria

Galera,

estou querendo fazer uma consulta no hibernate usando criteria mas, quando eu realizo a mesma ele não encontra o parametro instituicao.nomeInstituicao. Por favor o que estou errando. Segue o código:

RCBP


package br.gov.inca.rcbp.bean;

import javax.persistence.CascadeType;
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.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import br.gov.inca.publico.bean.Categoria;
import br.gov.inca.publico.bean.Instituicao;
import br.gov.inca.publico.bean.Municipio;
import br.gov.inca.publico.bean.UF;

@Entity
@SequenceGenerator(name = "SEQUENCE", sequenceName = "rcbp.rcbp_complemento_rcbp_seq")
@Table(schema = "rcbp")
public class RCBP {
	@Id 
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQUENCE")
	@Column(name = "id_rcbp")
	private int idRCBP;

	@OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name="id_instituicao")
	private Instituicao instituicao;

	@ManyToOne(cascade = CascadeType.PERSIST)
	@JoinColumn(name = "id_categoria")
	private Categoria categoria;

	@Column(name = "logradouro_rcbp")
	private String logradouroRCBP;

	@Column(name = "complemento_rcbp")
	private String complementoRCBP;

	@Column(name = "bairro_rcbp")
	private String bairro;

	@ManyToOne(cascade = CascadeType.PERSIST)
	@JoinColumn(name = "id_uf")
	private UF uf;

	@ManyToOne(cascade = CascadeType.PERSIST)
	@JoinColumn(name = "id_municipio")
	private Municipio municipio;

	@Column(name = "email_rcbp")
	private String emailRCBP;

	@Column(name = "telefone_rcbp")
	private String telefoneRCBP;

	// private Set questionarios;

	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	public Categoria getCategoria() {
		return categoria;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	public String getComplementoRCBP() {
		return complementoRCBP;
	}

	public void setComplementoRCBP(String complementoRCBP) {
		this.complementoRCBP = complementoRCBP;
	}

	public String getEmailRCBP() {
		return emailRCBP;
	}

	public void setEmailRCBP(String emailRCBP) {
		this.emailRCBP = emailRCBP;
	}

	public int getIdRCBP() {
		return idRCBP;
	}

	public void setIdRCBP(int idRCBP) {
		this.idRCBP = idRCBP;
	}

	public Instituicao getInstituicao() {
		return instituicao;
	}

	public void setInstituicao(Instituicao instituicao) {
		this.instituicao = instituicao;
	}

	public String getLogradouroRCBP() {
		return logradouroRCBP;
	}

	public void setLogradouroRCBP(String logradouroRCBP) {
		this.logradouroRCBP = logradouroRCBP;
	}

	public Municipio getMunicipio() {
		return municipio;
	}

	public void setMunicipio(Municipio municipio) {
		this.municipio = municipio;
	}

	public String getTelefoneRCBP() {
		return telefoneRCBP;
	}

	public void setTelefoneRCBP(String telefoneRCBP) {
		this.telefoneRCBP = telefoneRCBP;
	}

	public UF getUf() {
		return uf;
	}

	public void setUf(UF uf) {
		this.uf = uf;
	}
}

instituicao


package br.gov.inca.publico.bean;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;

import br.gov.inca.rcbp.bean.RCBP;



@SuppressWarnings("serial")
@Entity
@SequenceGenerator(name = "SEQUENCE", sequenceName = "instituicao_id_instituicao_seq")
public class Instituicao implements Serializable {

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQUENCE")
	@Column(name = "id_instituicao")
	private int idInstituicao;

	@Column(name = "nome_instituicao")
	private String nomeInstituicao;

	@Column(name = "email_instituicao")
	private String emailInstituicao;

	@Column(name = "cnes_instituicao")
	private String cnesInstituicao;

	@Column(name = "cnpj_instituicao")
	private String cnpjInstituicao;

	@Column(name = "telefone_central")
	private String telefoneCentral;

	@Column(name = "endereco_www")
	private String enderecoWWW;
	
	@OneToOne(mappedBy = "instituicao")
	private RCBP rcbp;
	
	public String getCnesInstituicao() {
		return cnesInstituicao;
	}

	public void setCnesInstituicao(String cnesInstituicao) {
		this.cnesInstituicao = cnesInstituicao;
	}

	public String getCnpjInstituicao() {
		return cnpjInstituicao;
	}

	public void setCnpjInstituicao(String cnpjInstituicao) {
		this.cnpjInstituicao = cnpjInstituicao;
	}

	public String getEmailInstituicao() {
		return emailInstituicao;
	}

	public void setEmailInstituicao(String emailInstituicao) {
		this.emailInstituicao = emailInstituicao;
	}

	public int getIdInstituicao() {
		return idInstituicao;
	}

	public void setIdInstituicao(int idInstituicao) {
		this.idInstituicao = idInstituicao;
	}

	public String getNomeInstituicao() {
		return nomeInstituicao;
	}

	public void setNomeInstituicao(String nomeInstituicao) {
		this.nomeInstituicao = nomeInstituicao;
	}

	public String getTelefoneCentral() {
		return telefoneCentral;
	}

	public void setTelefoneCentral(String telefoneCentral) {
		this.telefoneCentral = telefoneCentral;
	}

	public String getEnderecoWWW() {
		return enderecoWWW;
	}

	public void setEnderecoWWW(String enderecoWWW) {
		this.enderecoWWW = enderecoWWW;
	}

	public RCBP getRcbp() {
		return rcbp;
	}

	public void setRcbp(RCBP rcbp) {
		this.rcbp = rcbp;
	}
}

busca de rcbp


package br.gov.inca.rcbp.action;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;

import org.apache.log4j.Logger;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Expression;

import br.gov.inca.publico.bean.Municipio;
import br.gov.inca.publico.bean.UF;
import br.gov.inca.publico.dao.Dao;
import br.gov.inca.rcbp.bean.RCBP;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class RCBPBuscarAction extends ActionSupport {
	private RCBP rcbp;

	private Collection<UF> ufs;

	private Collection<Municipio> municipios;

	private static Logger log = Logger.getLogger(RCBPBuscarAction.class);

	public RCBP getRcbp() {
		return rcbp;
	}

	public void setRcbp(RCBP rcbp) {
		this.rcbp = rcbp;
	}

	public Collection<Municipio> getMunicipios() {
		return municipios;
	}

	public void setMunicipios(Collection<Municipio> municipios) {
		this.municipios = municipios;
	}

	public Collection<UF> getUfs() {
		return ufs;
	}

	public void setUfs(Collection<UF> ufs) {
		this.ufs = ufs;
	}

	@SuppressWarnings("unchecked")
	public String buscar() {
		Dao<RCBP> daoRCBP = new Dao<RCBP>();
		Map<String, ArrayList<RCBP>> map = (Map<String, ArrayList<RCBP>>) ActionContext.getContext().getSession();
		ArrayList<Criterion> criterios = new ArrayList<Criterion>();
		criterios.add(Expression.like("instituicao.nomeInstituicao", "%"+ this.rcbp.getInstituicao().getNomeInstituicao() + "%"));
		if(this.rcbp.getUf()!= null && this.rcbp.getUf().getIdUF()!= -1)
			criterios.add(Expression.eq("uf.idUF", this.rcbp.getUf().getIdUF()));
		try {
			map.put("rcbps", daoRCBP.buscar(this.rcbp, criterios));
		} catch (Exception e) {
			log.fatal(e.getMessage());
		}
		return SUCCESS;
	}

	public String carregar() {
		Dao<RCBP> daoRCBP = new Dao<RCBP>();
		try {
			this.rcbp = (RCBP) daoRCBP.carregar(this.rcbp.getClass(), this.rcbp
					.getIdRCBP());
		} catch (Exception e) {
			log.fatal(e.getMessage());
		}
		return SUCCESS;
	}

	public String preparar() {
		Dao<UF> daoUF = new Dao<UF>();
		Dao<Municipio> daoMunicipio = new Dao<Municipio>();
		try{
			this.setUfs(daoUF.listar(new UF()));
			this.setMunicipios(daoMunicipio.listar(new Municipio()));
		}catch(Exception e){
			log.fatal(e.getMessage());
		}
		return SUCCESS;
	}
	public String prepararConsulta() {
		Dao<UF> daoUF = new Dao<UF>();
		Dao<Municipio> daoMunicipio = new Dao<Municipio>();
		try{
			this.setUfs(daoUF.listar(new UF()));
			this.setMunicipios(daoMunicipio.listar(new Municipio()));
		}catch(Exception e){
			log.fatal(e.getMessage());
		}
		return SUCCESS;
	}
}

Coloque o stacktrace do erro que ocorre.

ok ostracktrace foi colocado.

segue o erro:

could not resolve property: instituicao.nomeInstituicao of: br.gov.inca.rcbp.bean.RCBP

o método executado é o buscar da classe RCBPBuscarAction

Não investi muito tempo procurando as partes relevantes do código, mas pelo que entendi, ao invés de só adicionar:

à criteria, você deve fazer assim:

ou assim: