Bom galera, já procurei na internet bastante, tentei infinitas soluções, mas nenhuma me ajudou 
No meu projeto, eu tenho um cadastro de produtos, e cada produto pertence a um grupo e um subgrupo.
Porém eu queria deixar ao cadastrar o produto, que o usuário quando selecionar o Grupo, o selectOneMenu de SubGrupo fosse alimentado com os SubGrupos do Grupo selecionado.
Segue abaixo meus códigos:
Classe Grupo
@Entity
@Table(name = "GRUPO")
public class Grupo implements Serializable {
@Id
@Column(name = "ID")
@SequenceGenerator(name = "SEQ_GRUPO", sequenceName = "GRUPO_GEN_ID", allocationSize = 1)
@GeneratedValue(generator = "SEQ_GRUPO", strategy = GenerationType.SEQUENCE)
private Integer idGrupo;
@Column(name = "NOME", length = 50, nullable = false)
@Length(max = 50, message = "O nome do Grupo deve ter no máximo 50 caracteres.")
@NotEmpty(message = "O nome do Grupo deve ser informado!")
private String nome;
@OneToMany(mappedBy = "grupo", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@Valid
private java.util.Collection<SubGrupo> subGrupo;
public Grupo() {
}
// Getters and Setters, Equals and HashCode and toString
Classe SubGrupo
@Entity
@Table(name="SUBGRUPO")
public class SubGrupo implements Serializable {
@Id
@SequenceGenerator(name="SEQ_SUBGRUPO",sequenceName="SUBGRUPO_GEN_ID",allocationSize=1)
@GeneratedValue(generator="SEQ_SUBGRUPO",strategy=GenerationType.SEQUENCE)
private Integer idSubGrupo;
@NotEmpty(message = "O nome deve ser informado!")
@Length(max = 60, min = 3, message = "O nome deve ter entre 3 e 60 caracteres!")
@Column(length = 60, nullable = false)
private String nome;
@ManyToOne(optional = false)
@NotNull(message = "Informe o grupo!")
private Grupo grupo;
public SubGrupo() {
}
// Getters and Setters, Equals and HashCode and toString
ManagedBean que estou utilizando para os testes, uso neste para não ferrar o oficial do meu Produto rsrsrs
@SessionScoped
@ManagedBean(name = "pprBean")
public class PPRBean implements Serializable {
private Grupo grupo;
private SubGrupo subGrupo;
private List<Grupo> grupos = new ArrayList<Grupo>();
private Integer idGrupo;
private List<SubGrupo> subGrupos = new ArrayList<SubGrupo>();
public PPRBean() {
}
public void grupoSelecionado() {
System.out.println("Grupos selecionado = " + grupo);
if (grupo != null && !grupo.equals("")) {
EntityManager em = GerarEntityManager.getInstance()
.getEntityManager();
subGrupos = em.createQuery(
"from SubGrupo s where s.grupo_id = 2 order by nome").getResultList();
setSubGrupos(subGrupos);
} else {
subGrupos = new ArrayList<SubGrupo>();
}
}
//Getters and Setters
Minha página xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title></title>
</h:head>
<h:body>
<h:form id="form">
<p:growl id="msgs" showDetail="true" />
<p:panel header="Double Combo" style="margin-bottom:10px;">
<h:panelGrid columns="2" cellpadding="5">
<p:selectOneMenu id="grupo" value="#{pprBean.grupo}">
<f:selectItem itemLabel="Selecione Grupo" itemValue="" />
<f:selectItems value="#{pprBean.grupos}"
itemValue="#{pprBean.grupo.idGrupo}" />
<p:ajax update="form:subGrupos" immediate="true" event="change"
listener="#{pprBean.grupoSelecionado}" />
</p:selectOneMenu>
<p:selectOneMenu id="subGrupos" value="#{pprBean.subGrupo}">
<f:selectItem itemLabel="Selecione Subgrupo" itemValue="" />
<f:selectItems value="#{pprBean.subGrupos}" />
</p:selectOneMenu>
</h:panelGrid>
</p:panel>
</h:form>
</h:body>
</html>
Tentei implementar como este aqui do showcase do PF: http://primefaces.org/showcase/ui/pprSelect.jsf
É neste estilo que preciso, quando selecionar o ComboBox 1, alimentasse o 2 
Dentro do método grupoSelecionado, eu só recebo NULL quando mando exibir na tela. Tenho total certeza que não estou conseguindo pegar o Grupo selecionado…
Alguém pode me ajudar?
Obrigado desde já amigos!
Abraços
