Recuperar id de um SelectOneMenu

Como eu recupero a ID de um item nesse selectOneMenu ?

<h:form>
<p:panel header=“Clientes”>
<p:selectOneMenu value="#{clienteMB.cliente}" filter=“true”>
<f:selectItem itemValue="" noSelectionOption=“true” itemLabel=“Selecione um cliente”/>
<f:selectItems value="#{CarrinhoMB.clientes}" var=“cliente” itemValue="#{cliente}" itemLabel="#{cliente.nome}"/>
</p:selectOneMenu>
</p:panel>
</h:form>

<h:form>
<p:panel header=“Clientes”>
<p:selectOneMenu value="#{clienteMB.cliente.id}" filter=“true”>
<f:selectItem itemValue="" noSelectionOption=“true” itemLabel=“Selecione um cliente”/>
<f:selectItems value="#{CarrinhoMB.clientes}" var=“cliente” itemValue="#{cliente.id}" itemLabel="#{cliente.nome}"/>
</p:selectOneMenu>
</p:panel>
</h:form>

Fazendo assim ele vai setar no atributo automaticamente, no bean eu só chamo o DAO ?

no bean para acessar o dao voce precisa chamar um metodo

Exato, eu faço isso

esse é o metodo que o botão chama

public void finalizarCarrinho(){
idao.CadastrarPedido§;
}

Esse é o DAO

public void CadastrarPedido(Pedido p){
Connection con = Conexao.getConnection();
PreparedStatement stmt = null;

    try {
        stmt = con.prepareStatement("INSERT INTO pedido (data, id_cliente) VALUES(?,?)");
        stmt.setString(1,p.getData());
        stmt.setInt(2, p.getId());
        stmt.executeUpdate();
    } catch (SQLException ex) {
        System.out.println(ex);
    }finally{
        Conexao.closeConnection(con,stmt);
    }
} 

Essa é a classe pedido

public class Pedido extends Cliente{

String pattern = "yyyy-MM-dd";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
private String data = simpleDateFormat.format(new Date());

Mas a id volta 0, eu debuguei o código, a data está inserindo certo eu testei

Me perdoe a ignorância,mas precisa mais alguma coisa fora isso, um Converter, hashCode ou algo assim ?