Hibernate com Annotations - Relacionamento m:n com mais de 2 entidades

4 respostas
T

Bom dia/tarde/noite/eclipse/netbeans/outros

Estou com uma duvida de mapeamento e não encontrei nada que pudesse me ajudar

Preciso mapear um relacionamento entre 3 entidades, com um único objeto de resolução.
Gostaria de saber se há uma forma de fazer esse relacionamento Many-To-Many apenas com Annotations, ou se é preciso criar um objeto de resolução e fazer vários relacionamentos One-To-Many.

Agradeço pela atenção.

[size=18]Classes:[/size]
Grupo

@Entity(name="Grupo")
@Table(name="grupo")
public class Grupo implements java.io.Serializable{

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="cdGrupo")
    private long id;

    @Column(name="nmGrupo")
    private String nome;

    //Construtores e métodos
}

Pagina

@Entity(name="Pagina")
@Table(name="pagina")
public class Pagina implements java.io.Serializable {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="cdPagina")
    private long id;

    @Column(name="nmUrl")
    private String url;

    //Construtores e métodos
}

Menu

@Entity(name="Menu")
@Table(name="menu")
public class Menu implements java.io.Serializable {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="cdMenu")
    private long id;

    @ManyToOne
    @JoinColumn(name="cdSubMenu")
    private Menu menuSuperior;

    @Column(name="nmMenu")
    private String nome;

    //Construtores e métodos
}

[size=18] Banco de Dados[/size]

CREATE TABLE  'grupo' (
  'cdGrupo' int(10) unsigned NOT NULL auto_increment,
  'nmGrupo' varchar(25) NOT NULL,
  PRIMARY KEY  ('cdGrupo'))

CREATE TABLE  'pagina' (
  'cdPagina' bigint(20) NOT NULL auto_increment,
  'nmUrl' varchar(255) NOT NULL,
  PRIMARY KEY  ('cdPagina'))

CREATE TABLE  'menu' (
  'cdMenu' bigint(20) NOT NULL auto_increment,
  'cdSubMenu' bigint(20) NOT NULL,
  'nmMenu' varchar(25) NOT NULL,
  PRIMARY KEY  ('cdMenu'),
  KEY 'menu_FKIndex1' ('cdSubMenu'))

CREATE TABLE  `grupoMenuPagina` (
  'cdGrupo' int(10) unsigned NOT NULL,
  'cdPagina' bigint(20) NOT NULL,
  'cdMenu' bigint(20) NOT NULL,
  PRIMARY KEY  ('cdGrupo','cdPagina','cdMenu'),
  KEY 'grupoMenuPagina_FKIndex1' ('cdGrupo'),
  KEY 'grupoMenuPagina_FKIndex2' ('cdMenu'),
  KEY 'grupoMenuPagina_FKIndex3' ('cdPagina'))

4 Respostas

E

Dê uma olhada aqui talvez te ajude. Boa sorte!

moacirjava

Abri um tópico ha um tempo atrás com uma dúvida parecida com a sua. tem um exemplo de relacionamento com 2 entidades e mais exemplos aqui

T

Na verdade o que eu queria saber é se é possível utilizar @ManyToMany para mapear o relacionamento de 3 entidades, ou se é necessário mapear o objeto de resolução e criar uma chave composta.

T

Desculpem-me, tive um problema de cache e acabei postando duas vezes

Criado 3 de março de 2009
Ultima resposta 4 de mar. de 2009
Respostas 4
Participantes 3