Ola pessoal, eu to quase me descabelando por conta de um relacionamento Hibernate com Criteria se alguem puder me ajudar
ficarei muito agradecido.
o Probelama que tenho é o seguinte:
Tenho uma classe de cadastros e essa tem uma lista de grupos
package br.com.horus.cadastro.model.cadastro;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import br.com.horus.administrativo.model.cliente.ClienteADM;
import br.com.horus.cadastro.model.grupo.Grupo;
@Entity
@Table(name="cadastro")
public class Cadastro implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id_cadastro", nullable = true)
private int id_cadastro;
@Column
private String tipoCad;
@Column
private String nome_cadastro;
@Column
private String sexo_cadastro;
@Column
private String estado_civil;
@Column
private Date nascimento_cadastro;
@Column
private String cpf_cadastro;
@Column
private String rg_cadastro;
@Column
private String observacaoPF;
/*
* Informa��es da pessoa juridica
*
*/
@Column
private String razao_social_cadastro;
@Column
private String nome_fantasia_cadastro;
@Column
private Date data_constituicao_cadastro;
@Column
private String cnpj_cadastro;
@Column
private String insc_estadual_cadastro;
@Column
private String observacaoPJ;
/**
* Informações de endereço
*/
@Column
private String descricaoEndereco;
@Column
private String rua;
@Column
private String numero;
@Column
private String complemento;
@Column
private String bairro;
@Column
private String cep;
@Column
private String cidade;
@Column
private String estado;
@Column
private String observacaoEndereco;
/**
*
* Fim das informações de endereco
*
*/
/**
*
* Inicios das informações de telefones
*
*/
@Column
private String telefoneResidencial;
@Column
private String telefoneComercial;
@Column
private String celular;
/**
* Fim das declarações de telefone
*
*/
/**
*
* Inicio das declarações de emails
*
*/
@Column
private String email;
@Column
private String tipo_;
@OneToMany(mappedBy="cadastro", fetch = FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
private List<Email> emailList = new ArrayList<Email>();
@OneToMany(mappedBy="cadastro", fetch = FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
private List<Endereco> enderecoList = new ArrayList<Endereco>();
@OneToMany(mappedBy = "cadastro", fetch = FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
private List<Telefone> telefoneList = new ArrayList<Telefone>();
@JoinTable(name = "grupo_fk", joinColumns = {
@JoinColumn(name = "cadastro", referencedColumnName = "id_cadastro")}, inverseJoinColumns = {
@JoinColumn(name = "grupo", referencedColumnName = "id_grupo")})
@ManyToMany(fetch = FetchType.EAGER)
private List<Grupo> grupoList = new ArrayList<Grupo>();
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="cadastro", nullable=true)
@Fetch(FetchMode.JOIN)
private Cadastro cadastro;
@OneToMany(mappedBy="cadastro", fetch = FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
private List<Cadastro> cadastros = new ArrayList<Cadastro>();
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="cliente_adm", nullable=true)
@Fetch(FetchMode.JOIN)
private ClienteADM clienteADM;
public int getId_cadastro() {
return id_cadastro;
}
public void setId_cadastro(int id_cadastro) {
this.id_cadastro = id_cadastro;
}
public String getNome_cadastro() {
return nome_cadastro;
}
public void setNome_cadastro(String nome_cadastro) {
this.nome_cadastro = nome_cadastro;
}
public String getSexo_cadastro() {
return sexo_cadastro;
}
public void setSexo_cadastro(String sexo_cadastro) {
this.sexo_cadastro = sexo_cadastro;
}
public String getEstado_civil() {
return estado_civil;
}
public void setEstado_civil(String estado_civil) {
this.estado_civil = estado_civil;
}
public Date getNascimento_cadastro() {
return nascimento_cadastro;
}
public void setNascimento_cadastro(Date nascimento_cadastro) {
this.nascimento_cadastro = nascimento_cadastro;
}
public String getCpf_cadastro() {
return cpf_cadastro;
}
public void setCpf_cadastro(String cpf_cadastro) {
this.cpf_cadastro = cpf_cadastro;
}
public String getRg_cadastro() {
return rg_cadastro;
}
public void setRg_cadastro(String rg_cadastro) {
this.rg_cadastro = rg_cadastro;
}
public String getObservacaoPF() {
return observacaoPF;
}
public void setObservacaoPF(String observacaoPF) {
this.observacaoPF = observacaoPF;
}
public String getRazao_social_cadastro() {
return razao_social_cadastro;
}
public void setRazao_social_cadastro(String razao_social_cadastro) {
this.razao_social_cadastro = razao_social_cadastro;
}
public String getNome_fantasia_cadastro() {
return nome_fantasia_cadastro;
}
public void setNome_fantasia_cadastro(String nome_fantasia_cadastro) {
this.nome_fantasia_cadastro = nome_fantasia_cadastro;
}
public Date getData_constituicao_cadastro() {
return data_constituicao_cadastro;
}
public void setData_constituicao_cadastro(Date data_constituicao_cadastro) {
this.data_constituicao_cadastro = data_constituicao_cadastro;
}
public String getCnpj_cadastro() {
return cnpj_cadastro;
}
public void setCnpj_cadastro(String cnpj_cadastro) {
this.cnpj_cadastro = cnpj_cadastro;
}
public String getInsc_estadual_cadastro() {
return insc_estadual_cadastro;
}
public void setInsc_estadual_cadastro(String insc_estadual_cadastro) {
this.insc_estadual_cadastro = insc_estadual_cadastro;
}
public String getObservacaoPJ() {
return observacaoPJ;
}
public void setObservacaoPJ(String observacaoPJ) {
this.observacaoPJ = observacaoPJ;
}
public String getDescricaoEndereco() {
return descricaoEndereco;
}
public void setDescricaoEndereco(String descricaoEndereco) {
this.descricaoEndereco = descricaoEndereco;
}
public String getRua() {
return rua;
}
public void setRua(String rua) {
this.rua = rua;
}
public String getNumero() {
return numero;
}
public void setNumero(String numero) {
this.numero = numero;
}
public String getComplemento() {
return complemento;
}
public void setComplemento(String complemento) {
this.complemento = complemento;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public String getCep() {
return cep;
}
public void setCep(String cep) {
this.cep = cep;
}
public String getCidade() {
return cidade;
}
public void setCidade(String cidade) {
this.cidade = cidade;
}
public String getEstado() {
return estado;
}
public void setEstado(String estado) {
this.estado = estado;
}
public String getObservacaoEndereco() {
return observacaoEndereco;
}
public void setObservacaoEndereco(String observacaoEndereco) {
this.observacaoEndereco = observacaoEndereco;
}
public String getTelefoneResidencial() {
return telefoneResidencial;
}
public void setTelefoneResidencial(String telefoneResidencial) {
this.telefoneResidencial = telefoneResidencial;
}
public String getTelefoneComercial() {
return telefoneComercial;
}
public void setTelefoneComercial(String telefoneComercial) {
this.telefoneComercial = telefoneComercial;
}
public String getCelular() {
return celular;
}
public void setCelular(String celular) {
this.celular = celular;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public List<Email> getEmailList() {
return emailList;
}
public void setEmailList(List<Email> emailList) {
this.emailList = emailList;
}
public List<Endereco> getEnderecoList() {
return enderecoList;
}
public void setEnderecoList(List<Endereco> enderecoList) {
this.enderecoList = enderecoList;
}
public List<Telefone> getTelefoneList() {
return telefoneList;
}
public void setTelefoneList(List<Telefone> telefoneList) {
this.telefoneList = telefoneList;
}
public List<Grupo> getGrupoList() {
return grupoList;
}
public void setGrupoList(List<Grupo> grupoList) {
this.grupoList = grupoList;
}
public Cadastro getCadastro() {
return cadastro;
}
public void setCadastro(Cadastro cadastro) {
this.cadastro = cadastro;
}
public List<Cadastro> getCadastros() {
return cadastros;
}
public void setCadastros(List<Cadastro> cadastros) {
this.cadastros = cadastros;
}
public String getTipo_() {
return tipo_;
}
public void setTipo_(String tipo_) {
this.tipo_ = tipo_;
}
public ClienteADM getClienteADM() {
return clienteADM;
}
public void setClienteADM(ClienteADM clienteADM) {
this.clienteADM = clienteADM;
}
public String getTipoCad() {
return tipoCad;
}
public void setTipoCad(String tipoCad) {
this.tipoCad = tipoCad;
}
/*
@Override
public int hashCode() {
int hash = 0;
hash += (id_cadastro != 0 ? id_cadastro : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Cadastro)) {
return false;
}
Cadastro other = (Cadastro) object;
if ((this.id_cadastro == 0 && other.id_cadastro != 0) || (this.id_cadastro != 0 && !(this.id_cadastro == other.id_cadastro))) {
return false;
}
return true;
}
@Override
public String toString() {
return "br.com.sissolutions.model.cadastro.Cadastro[id_cadastro=" + id_cadastro + "]";
}*/
}
Segue classe de Grupo
package br.com.horus.cadastro.model.grupo;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import br.com.horus.administrativo.model.cliente.ClienteADM;
import br.com.horus.cadastro.model.cadastro.Cadastro;
@Entity
@Table(name="grupo")
public class Grupo implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id_grupo", nullable=false)
private int idGrupo;
@Column
private String nomeGrupo;
@Column
private String descricao;
@Transient
private boolean selected;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="grupo", nullable=true)
@Fetch(FetchMode.JOIN)
private Grupo grupo;
@OneToMany(mappedBy="grupo", fetch = FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
private List<Grupo> gruposFilhos = new ArrayList<Grupo>();
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="cliente_adm", nullable=true)
@Fetch(FetchMode.JOIN)
private ClienteADM clienteADM;
@OneToMany(mappedBy="grupoList", fetch = FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
private List<Cadastro> cadastros = new ArrayList<Cadastro>();
public int getIdGrupo() {
return idGrupo;
}
public void setIdGrupo(int idGrupo) {
this.idGrupo = idGrupo;
}
public String getNomeGrupo() {
return nomeGrupo;
}
public void setNomeGrupo(String nomeGrupo) {
this.nomeGrupo = nomeGrupo;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Grupo getGrupo() {
return grupo;
}
public void setGrupo(Grupo grupo) {
this.grupo = grupo;
}
public List<Grupo> getGruposFilhos() {
return gruposFilhos;
}
public void setGruposFilhos(List<Grupo> gruposFilhos) {
this.gruposFilhos = gruposFilhos;
}
public ClienteADM getClienteADM() {
return clienteADM;
}
public void setClienteADM(ClienteADM clienteADM) {
this.clienteADM = clienteADM;
}
public boolean isSelected() {
return selected;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
public List<Cadastro> getCadastros() {
return cadastros;
}
public void setCadastros(List<Cadastro> cadastros) {
this.cadastros = cadastros;
}
}
eu preciso fazer um select com Criteria
pra trazer todos os cadastros do Grupo x por exemplo
Alguem pode me ajudar?
Grade abraço a todos.