Listar cidades a partir do estado selecionado

Boa tarde, estou desenvolvendo uma aplicação onde tem combos dependentes de estado e cidade. Está carregando o estado normalmente, porém não consigo carregar a cidade de acordo com o estado. Alguém pode me ajudar onde estou errando? vou postar trecho de onde está dando erro:

`public class CidadeDao implements Serializable {

private static final long serialVersionUID = 1L;


private EntityManager entityManager;

public Cidade buscarPeloId(Integer id){
	return entityManager.find(Cidade.class, id);
}

@SuppressWarnings("unchecked")
public List<Cidade> buscarCidades(Estado estado){

	Session session = this.entityManager.unwrap(Session.class);
	Criteria criteria = session.createCriteria(Cidade.class);		
	if(estado !=null){
		criteria.add(Restrictions.eq("estado", estado));
	}
	
	return criteria.list();
	}

}
`

no meu managedBean está assim:
` }

public List<Cidade> getCidades() {
	return cidades;
}

public void setCidades(List<Cidade> cidades) {
	this.cidades = cidades;
}

public void carregarCidades(){

	cidades = cidadeDao.buscarCidades();
}

`

no meu form
`


<h:outputText value=" " />
							<p:selectOneMenu id="estado" value="#{contatoMB.contato.estado}"
								label="#{msg['label.contato.estado']}" required="false"
								requiredMessage="O campo Estado é Obrigatório!"
								styleClass="input-large" placeholder="Estado" size="5">
								<f:selectItem itemLabel="Estado" noSelectionOption="true" />
								<f:selectItems value="#{contatoMB.estados}" var="e"
									itemLabel="#{e.sigla}" itemValue="#{e.sigla}" />
								<p:ajax execute="@this" render="cidade" listener="#{contatoMB.carregarCidades}" />
								<!-- <p:ajax event="change" listener="#{contatoMB.carregarCidades}"
									update="cidade" /> -->
							</p:selectOneMenu>
						</div>
					</div>

					<div class="controls-row" align="center">
						<label class="control-label"><h:outputText value="" /></label>
						<div class="controls">
							<p:selectOneMenu id="cidade" value="#{contatoMB.contato.cidade}"
								label="#{msg['label.contato.cidade']}" required="false"
								requiredMessage="O campo Cidade é Obrigatório!"
								styleClass="input-large" placeholder="cidade" size="5">
								<f:selectItem itemLabel="Cidade" noSelectionOption="true" />
								<f:selectItems value="#{contatoMB.cidades}" var="c"
									itemLabel="#{c.nome}" itemValue="#{c}" />
							</p:selectOneMenu>
						</div>
					</div>`