<p:SelectOneMenu> problematico

Pessoal,

Estou batendo cabeça a 3 dias com esse treco e não sei qual o problema. Não consigo salvar a informação no banco. O problema está SelectOneMenu (eu acho), a informação com a relação das unidades aparecem na tela, mas na hora de salvar, ele salva todas as informações, menos a de unidade, clube e classe.

Se resolver o de um desses 3, resolve todos pois são praticamente iguais. Acho que estou usando errado.

Meu xhtml

&lt;h:form id="conteudo1"&gt;
		&lt;h:panelGrid columns="2"&gt;
		&lt;f:ajax&gt;			
			&lt;h:outputLabel value="Nome: " for="nome" /&gt;
			&lt;h:inputText value="#{desbravadorBean.desbravador.nome}" id="nome" /&gt;
			&lt;h:outputLabel value="Nascimento: " for="nasc" /&gt;
			&lt;p:calendar pattern="dd/MM/yyyy" id="nasc" value="#{desbravadorBean.desbravador.nascimento.time}"/&gt;
			&lt;h:outputLabel value="Pai: " for="pai" /&gt;
			&lt;h:inputText value="#{desbravadorBean.desbravador.pai}" id="pai" /&gt;
			&lt;h:outputLabel value="Mae: " for="mae" /&gt;
			&lt;h:inputText value="#{desbravadorBean.desbravador.mae}" id="mae" /&gt;
			&lt;h:outputLabel value="Endereço: " for="end" /&gt;
			&lt;h:inputText value="#{desbravadorBean.desbravador.endereco}" id="end" /&gt;
			&lt;h:outputLabel value="Telefone: " for="tel" /&gt;
			&lt;p:inputMask id="tel" mask="(99) 9999-9999" value="#{desbravadorBean.desbravador.telefone}"/&gt;
			&lt;h:outputLabel value="Unidade: " for="unidade" /&gt;
			&lt;h:selectOneMenu value="#{desbravadorBean.desbravador.unidade}"&gt;
				&lt;f:selectItems value="#{unidadeBean.unidades}" var="unidade" itemValue="#{unidade}" itemLabel="#{unidade.nome}"/&gt;
			&lt;/h:selectOneMenu&gt;
			&lt;h:outputLabel value="Clube: " for="clube" /&gt;
			&lt;h:selectOneMenu value="#{desbravadorBean.desbravador.clube.id}" &gt;
				&lt;f:selectItems value="#{clubeBean.clubes}" var="clube" itemValue="#{clube.id}" itemLabel="#{clube.nome}"/&gt;
			&lt;/h:selectOneMenu&gt;
			&lt;h:outputLabel value="Classe: " for="classe" /&gt;
			&lt;h:selectOneMenu value="#{desbravadorBean.desbravador.classe}"&gt;
				&lt;f:selectItems value="#{classeBean.classes}" var="classe" itemValue="#{classe.id}" itemLabel="#{classe.nome}"/&gt;
			&lt;/h:selectOneMenu&gt;
			
			&lt;h:commandButton value="Gravar" action="#{desbravadorBean.salvar}" &gt; 
			&lt;f:ajax render=":conteudo1" /&gt;
			&lt;/h:commandButton&gt;
		&lt;/f:ajax&gt;
		&lt;/h:panelGrid&gt;
	&lt;/h:form&gt;

Meu bean Desbravador

@SessionScoped
@ManagedBean
public class DesbravadorBean {

	private Desbravador desbravador = new Desbravador();
	private List&lt;Desbravador&gt; desbravadores;
	
	public Desbravador getDesbravador(){return this.desbravador;}
	public void setDesbravador(Desbravador desbravador){this.desbravador = desbravador;}
	
	public List&lt;Desbravador&gt; getDesbravadores(){
		desbravadores = (new DAO&lt;Desbravador&gt;(Desbravador.class)).listaTodos();
		return desbravadores;
	}
	
	@PostConstruct
	public void carregarDesbravadores(){
		desbravadores = (new DAO&lt;Desbravador&gt;(Desbravador.class)).listaTodos();
	}
	
	
	
	public void salvar(){
		DAO&lt;Desbravador&gt; dao = new DAO&lt;Desbravador&gt;(Desbravador.class);
		if (desbravador.getId() == null){
			dao.adiciona(desbravador);
		} else { 
			dao.atualiza(desbravador);
		}
		this.desbravador = new Desbravador();
		this.desbravadores = dao.listaTodos();
	}
	
	public void remover(){
		
		DAO&lt;Desbravador&gt; dao = new DAO&lt;Desbravador&gt;(Desbravador.class);	
		dao.remove(this.desbravador);
		this.desbravador = new Desbravador();
	}
}

Meu Bean Unidade


@ViewScoped
@ManagedBean
@SuppressWarnings(value="serial")
public class UnidadeBean implements Serializable {

	private Unidade unidade = new Unidade();
	private List&lt;Unidade&gt; unidades;
	
	public Unidade getUnidade() {return unidade;}
	public List&lt;Unidade&gt; getUnidades() {return unidades = (new DAO&lt;Unidade&gt;(Unidade.class)).listaTodos();}
	
	
}

Minha entidade Desbravador


@Entity
@SuppressWarnings(value="serial")
public class Desbravador implements Serializable{
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Long id;
	private String nome;
	
	@Temporal(TemporalType.DATE)
	private Calendar nascimento;
	
	private String mae;
	private String pai;
	private String endereco;
	private String telefone;
	
	@ManyToOne
	private Unidade unidade;
	
	@ManyToOne
	private Classe classe;
	
	@ManyToOne
	private Clube clube;	
	
	//getters e setters
}

Minha entidade Unidade


@ViewScoped
@ManagedBean
@SuppressWarnings(value="serial")
public class UnidadeBean implements Serializable {

	private Unidade unidade = new Unidade();
	private List&lt;Unidade&gt; unidades;
	
	public Unidade getUnidade() {return unidade;}
	public List&lt;Unidade&gt; getUnidades() {return unidades = (new DAO&lt;Unidade&gt;(Unidade.class)).listaTodos();}
	
	
}

pessoal,

escrevi errado…

num é <p:SelectOneMenu>, é <h:SelectOneMenu>

estou utilizando o primefaces 2.2.1 ainda

Cara adapta ao seu codigo ai:

&lt;h:selectOneMenu value="#{desbravadorBean.desbravador.unidade}"&gt;  
         &lt;f:selectItems value="#{unidadeBean.unidades}" var="unidade" itemValue="#{unidade}" itemLabel="#{unidade.nome}"/&gt;  
&lt;/h:selectOneMenu&gt; 

Por

&lt;h:selectOneMenu value="#{desbravadorBean.desbravador.unidade}"&gt;  
         &lt;f:selectItems value="#{unidadeBean.unidades}"/&gt;  
&lt;/h:selectOneMenu&gt; 

Manager Bean

 private List&lt;SelectItem&gt; unidades;  
      
 public List&lt;SelectItem&gt; getUnidades() {
   List&lt;Unidade&gt; und = (new DAO&lt;Unidade&gt;(Unidade.class)).listaTodos();
   unidades = new LinkedList&lt;Unidade&gt;();
   for(Unidade u : und){
     unidades.add(new SelectItem(u.id, u.nome));
   }
   return unidades;
  }