Olá pessoas, estou com um pequeno problema com relação à busca de uma classe que possui um auto relacionamento. Vou tentar explicar da melhor forma possível o que eu quero e abaixo seguem as minhas classes.
Eu tenho uma tabela de Menus que faz um auto-relacionamento e uma tabela de Papeis onde cada registro aponta para um menu, essa tabela é ligada à tabela de usuarios através de uma auxiliar.
Eu preciso trazer os menus de acordo com os papeis relacionados ao usuário em específico, o meu problema é que a minha intenção é trazer apenas os menus parent (nivel 1) com as childrens que possuem o usuario (através do papel), e o que está acontecendo é que ele está trazendo os parents corretamente, porém com todas as childrens que esse parent possue, independente do papel. Não sei se ficou claro o suficiente…
seguem os códigos (package, imports e construtores omitidos propositalmente):
Menu.java
@Entity
@Table(name = "menu", catalog = "lnet")
public class Menu implements java.io.Serializable {
private Long menuId;
private Menu menu;
private String menuDescricao;
private Integer menuNivel;
private String menuTitulo;
private String menuPagina;
private Boolean menuGeral;
private String menuMensagem;
private Integer menuOrdem;
private Set<Papeis> papeises = new HashSet<Papeis>(0);
private Set<Menu> menus = new HashSet<Menu>(0);
private Set<AuxiliarMenusmodulos> auxiliarMenusmoduloses = new HashSet<AuxiliarMenusmodulos>(
0);
public Menu() {
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "menu_id", unique = true, nullable = false)
public Long getMenuId() {
return this.menuId;
}
public void setMenuId(Long menuId) {
this.menuId = menuId;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "menu_menu_id")
public Menu getMenu() {
return this.menu;
}
public void setMenu(Menu menu) {
this.menu = menu;
}
@Column(name = "menu_descricao", length = 45)
public String getMenuDescricao() {
return this.menuDescricao;
}
public void setMenuDescricao(String menuDescricao) {
this.menuDescricao = menuDescricao;
}
@Column(name = "menu_nivel")
public Integer getMenuNivel() {
return this.menuNivel;
}
public void setMenuNivel(Integer menuNivel) {
this.menuNivel = menuNivel;
}
@Column(name = "menu_titulo", length = 100)
public String getMenuTitulo() {
return this.menuTitulo;
}
public void setMenuTitulo(String menuTitulo) {
this.menuTitulo = menuTitulo;
}
@Column(name = "menu_pagina", length = 1000)
public String getMenuPagina() {
return this.menuPagina;
}
public void setMenuPagina(String menuPagina) {
this.menuPagina = menuPagina;
}
@Column(name = "menu_geral")
public Boolean getMenuGeral() {
return this.menuGeral;
}
public void setMenuGeral(Boolean menuGeral) {
this.menuGeral = menuGeral;
}
@Column(name = "menu_mensagem", length = 100)
public String getMenuMensagem() {
return this.menuMensagem;
}
public void setMenuMensagem(String menuMensagem) {
this.menuMensagem = menuMensagem;
}
@Column(name = "menu_ordem")
public Integer getMenuOrdem() {
return this.menuOrdem;
}
public void setMenuOrdem(Integer menuOrdem) {
this.menuOrdem = menuOrdem;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "menu")
public Set<Papeis> getPapeises() {
return this.papeises;
}
public void setPapeises(Set<Papeis> papeises) {
this.papeises = papeises;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "menu")
public Set<Menu> getMenus() {
return this.menus;
}
public void setMenus(Set<Menu> menus) {
this.menus = menus;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "menu")
public Set<AuxiliarMenusmodulos> getAuxiliarMenusmoduloses() {
return this.auxiliarMenusmoduloses;
}
public void setAuxiliarMenusmoduloses(
Set<AuxiliarMenusmodulos> auxiliarMenusmoduloses) {
this.auxiliarMenusmoduloses = auxiliarMenusmoduloses;
}
}
Papeis.java
@Entity
@Table(name = "papeis", catalog = "lnet")
public class Papeis implements java.io.Serializable {
private Long papelId;
private Menu menu;
private Acoes acoes;
private String papelNome;
private Integer papelTipo;
private Boolean papelPadrao;
private Boolean papelSituacao;
private Set<AuxiliarUsuariospapeis> auxiliarUsuariospapeises = new HashSet<AuxiliarUsuariospapeis>(
0);
public Papeis() {
} Set<AuxiliarUsuariospapeis> auxiliarUsuariospapeises) {
this.menu = menu;
this.acoes = acoes;
this.papelNome = papelNome;
this.papelTipo = papelTipo;
this.papelPadrao = papelPadrao;
this.papelSituacao = papelSituacao;
this.auxiliarUsuariospapeises = auxiliarUsuariospapeises;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "papel_id", unique = true, nullable = false)
public Long getPapelId() {
return this.papelId;
}
public void setPapelId(Long papelId) {
this.papelId = papelId;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "papel_menu_id", nullable = false)
public Menu getMenu() {
return this.menu;
}
public void setMenu(Menu menu) {
this.menu = menu;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "papel_acao_id")
public Acoes getAcoes() {
return this.acoes;
}
public void setAcoes(Acoes acoes) {
this.acoes = acoes;
}
@Column(name = "papel_nome", length = 45)
public String getPapelNome() {
return this.papelNome;
}
public void setPapelNome(String papelNome) {
this.papelNome = papelNome;
}
@Column(name = "papel_tipo")
public Integer getPapelTipo() {
return this.papelTipo;
}
public void setPapelTipo(Integer papelTipo) {
this.papelTipo = papelTipo;
}
@Column(name = "papel_padrao")
public Boolean getPapelPadrao() {
return this.papelPadrao;
}
public void setPapelPadrao(Boolean papelPadrao) {
this.papelPadrao = papelPadrao;
}
@Column(name = "papel_situacao")
public Boolean getPapelSituacao() {
return this.papelSituacao;
}
public void setPapelSituacao(Boolean papelSituacao) {
this.papelSituacao = papelSituacao;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "papeis")
public Set<AuxiliarUsuariospapeis> getAuxiliarUsuariospapeises() {
return this.auxiliarUsuariospapeises;
}
public void setAuxiliarUsuariospapeises(
Set<AuxiliarUsuariospapeis> auxiliarUsuariospapeises) {
this.auxiliarUsuariospapeises = auxiliarUsuariospapeises;
}
}
AuxiliarUsuariospapeis.java
@Entity
@Table(name = "auxiliar_usuariospapeis", catalog = "lnet")
public class AuxiliarUsuariospapeis implements java.io.Serializable {
private Long auxupId;
private CadastroUsuarios cadastroUsuarios;
private Papeis papeis;
private Set<AuxiliarUsuariospapeisfiliais> auxiliarUsuariospapeisfiliaises = new HashSet<AuxiliarUsuariospapeisfiliais>(
0);
public AuxiliarUsuariospapeis() {
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "auxup_id", unique = true, nullable = false)
public Long getAuxupId() {
return this.auxupId;
}
public void setAuxupId(Long auxupId) {
this.auxupId = auxupId;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "auxup_cadus_id", nullable = false)
public CadastroUsuarios getCadastroUsuarios() {
return this.cadastroUsuarios;
}
public void setCadastroUsuarios(CadastroUsuarios cadastroUsuarios) {
this.cadastroUsuarios = cadastroUsuarios;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "auxup_papel_id", nullable = false)
public Papeis getPapeis() {
return this.papeis;
}
public void setPapeis(Papeis papeis) {
this.papeis = papeis;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "auxiliarUsuariospapeis")
public Set<AuxiliarUsuariospapeisfiliais> getAuxiliarUsuariospapeisfiliaises() {
return this.auxiliarUsuariospapeisfiliaises;
}
public void setAuxiliarUsuariospapeisfiliaises(
Set<AuxiliarUsuariospapeisfiliais> auxiliarUsuariospapeisfiliaises) {
this.auxiliarUsuariospapeisfiliaises = auxiliarUsuariospapeisfiliaises;
}
}
CadastroUsuarios.java
@Entity
@Table(name = "cadastro_usuarios", catalog = "lnet")
public class CadastroUsuarios implements java.io.Serializable {
private Long cadusId;
private String cadusLogin;
private String cadusSenha;
private String cadusNome;
private Date cadusNascimento;
private String cadusRamal;
private String cadusEmail;
private String cadusCelular;
private String cadusNextel;
private String cadusTelefonepessoal;
private String cadusCelularpessoal;
private Integer cadusCor;
private Date cadusDatacadastro;
private Date cadusUltimaalteracao;
private Boolean cadusSituacao;
private Set<AuxiliarUsuariospapeis> auxiliarUsuariospapeises = new HashSet<AuxiliarUsuariospapeis>(
0);
private Set<AuxiliarUsuariosfiliais> auxiliarUsuariosfiliaises = new HashSet<AuxiliarUsuariosfiliais>(
0);
private Set<CadastroAvaliacoeshistoricos> cadastroAvaliacoeshistoricoses = new HashSet<CadastroAvaliacoeshistoricos>(
0);
private Set<AuxiliarInformativosusuarios> auxiliarInformativosusuarioses = new HashSet<AuxiliarInformativosusuarios>(
0);
private Set<CadastroEstoquehistoricos> cadastroEstoquehistoricoses = new HashSet<CadastroEstoquehistoricos>(
0);
private Set<CadastroInformativos> cadastroInformativoses = new HashSet<CadastroInformativos>(
0);
private Set<AuxiliarAutomoveisdados> auxiliarAutomoveisdadoses = new HashSet<AuxiliarAutomoveisdados>(
0);
private Set<GrupoUsuarios> grupoUsuarioses = new HashSet<GrupoUsuarios>(0);
private Set<CadastroSites> cadastroSiteses = new HashSet<CadastroSites>(0);
public CadastroUsuarios() {
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "cadus_id", unique = true, nullable = false)
public Long getCadusId() {
return this.cadusId;
}
public void setCadusId(Long cadusId) {
this.cadusId = cadusId;
}
@Column(name = "cadus_login", length = 45)
public String getCadusLogin() {
return this.cadusLogin;
}
public void setCadusLogin(String cadusLogin) {
this.cadusLogin = cadusLogin;
}
@Column(name = "cadus_senha", length = 45)
public String getCadusSenha() {
return this.cadusSenha;
}
public void setCadusSenha(String cadusSenha) {
this.cadusSenha = cadusSenha;
}
@Column(name = "cadus_nome", length = 200)
public String getCadusNome() {
return this.cadusNome;
}
public void setCadusNome(String cadusNome) {
this.cadusNome = cadusNome;
}
@Temporal(TemporalType.DATE)
@Column(name = "cadus_nascimento", length = 10)
public Date getCadusNascimento() {
return this.cadusNascimento;
}
public void setCadusNascimento(Date cadusNascimento) {
this.cadusNascimento = cadusNascimento;
}
@Column(name = "cadus_ramal", length = 45)
public String getCadusRamal() {
return this.cadusRamal;
}
public void setCadusRamal(String cadusRamal) {
this.cadusRamal = cadusRamal;
}
@Column(name = "cadus_email", length = 200)
public String getCadusEmail() {
return this.cadusEmail;
}
public void setCadusEmail(String cadusEmail) {
this.cadusEmail = cadusEmail;
}
@Column(name = "cadus_celular", length = 45)
public String getCadusCelular() {
return this.cadusCelular;
}
public void setCadusCelular(String cadusCelular) {
this.cadusCelular = cadusCelular;
}
@Column(name = "cadus_nextel", length = 45)
public String getCadusNextel() {
return this.cadusNextel;
}
public void setCadusNextel(String cadusNextel) {
this.cadusNextel = cadusNextel;
}
@Column(name = "cadus_telefonepessoal", length = 45)
public String getCadusTelefonepessoal() {
return this.cadusTelefonepessoal;
}
public void setCadusTelefonepessoal(String cadusTelefonepessoal) {
this.cadusTelefonepessoal = cadusTelefonepessoal;
}
@Column(name = "cadus_celularpessoal", length = 45)
public String getCadusCelularpessoal() {
return this.cadusCelularpessoal;
}
public void setCadusCelularpessoal(String cadusCelularpessoal) {
this.cadusCelularpessoal = cadusCelularpessoal;
}
@Column(name = "cadus_cor")
public Integer getCadusCor() {
return this.cadusCor;
}
public void setCadusCor(Integer cadusCor) {
this.cadusCor = cadusCor;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "cadus_datacadastro", length = 19)
public Date getCadusDatacadastro() {
return this.cadusDatacadastro;
}
public void setCadusDatacadastro(Date cadusDatacadastro) {
this.cadusDatacadastro = cadusDatacadastro;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "cadus_ultimaalteracao", length = 19)
public Date getCadusUltimaalteracao() {
return this.cadusUltimaalteracao;
}
public void setCadusUltimaalteracao(Date cadusUltimaalteracao) {
this.cadusUltimaalteracao = cadusUltimaalteracao;
}
@Column(name = "cadus_situacao")
public Boolean getCadusSituacao() {
return this.cadusSituacao;
}
public void setCadusSituacao(Boolean cadusSituacao) {
this.cadusSituacao = cadusSituacao;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "cadastroUsuarios")
public Set<AuxiliarUsuariospapeis> getAuxiliarUsuariospapeises() {
return this.auxiliarUsuariospapeises;
}
public void setAuxiliarUsuariospapeises(
Set<AuxiliarUsuariospapeis> auxiliarUsuariospapeises) {
this.auxiliarUsuariospapeises = auxiliarUsuariospapeises;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "cadastroUsuarios")
public Set<AuxiliarUsuariosfiliais> getAuxiliarUsuariosfiliaises() {
return this.auxiliarUsuariosfiliaises;
}
public void setAuxiliarUsuariosfiliaises(
Set<AuxiliarUsuariosfiliais> auxiliarUsuariosfiliaises) {
this.auxiliarUsuariosfiliaises = auxiliarUsuariosfiliaises;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "cadastroUsuarios")
public Set<CadastroAvaliacoeshistoricos> getCadastroAvaliacoeshistoricoses() {
return this.cadastroAvaliacoeshistoricoses;
}
public void setCadastroAvaliacoeshistoricoses(
Set<CadastroAvaliacoeshistoricos> cadastroAvaliacoeshistoricoses) {
this.cadastroAvaliacoeshistoricoses = cadastroAvaliacoeshistoricoses;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "cadastroUsuarios")
public Set<AuxiliarInformativosusuarios> getAuxiliarInformativosusuarioses() {
return this.auxiliarInformativosusuarioses;
}
public void setAuxiliarInformativosusuarioses(
Set<AuxiliarInformativosusuarios> auxiliarInformativosusuarioses) {
this.auxiliarInformativosusuarioses = auxiliarInformativosusuarioses;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "cadastroUsuarios")
public Set<CadastroEstoquehistoricos> getCadastroEstoquehistoricoses() {
return this.cadastroEstoquehistoricoses;
}
public void setCadastroEstoquehistoricoses(
Set<CadastroEstoquehistoricos> cadastroEstoquehistoricoses) {
this.cadastroEstoquehistoricoses = cadastroEstoquehistoricoses;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "cadastroUsuarios")
public Set<CadastroInformativos> getCadastroInformativoses() {
return this.cadastroInformativoses;
}
public void setCadastroInformativoses(
Set<CadastroInformativos> cadastroInformativoses) {
this.cadastroInformativoses = cadastroInformativoses;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "cadastroUsuarios")
public Set<AuxiliarAutomoveisdados> getAuxiliarAutomoveisdadoses() {
return this.auxiliarAutomoveisdadoses;
}
public void setAuxiliarAutomoveisdadoses(
Set<AuxiliarAutomoveisdados> auxiliarAutomoveisdadoses) {
this.auxiliarAutomoveisdadoses = auxiliarAutomoveisdadoses;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "cadastroUsuarios")
public Set<GrupoUsuarios> getGrupoUsuarioses() {
return this.grupoUsuarioses;
}
public void setGrupoUsuarioses(Set<GrupoUsuarios> grupoUsuarioses) {
this.grupoUsuarioses = grupoUsuarioses;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "cadastroUsuarios")
public Set<CadastroSites> getCadastroSiteses() {
return this.cadastroSiteses;
}
public void setCadastroSiteses(Set<CadastroSites> cadastroSiteses) {
this.cadastroSiteses = cadastroSiteses;
}
}