Bom dia senhores, confesso que nos últimos tempos venho me frustando um pouco com algo que na teoria eh muito simples porem na loja de programacao estou levando um verdadeiro “COURO”, o que estou fazendo eh o seguinte, fazer 2 associativas se relacionarem um com a outra, estou sem o diagrama de classe aqui comigo, portanto irei tenta explicar,
Tenho a Unidade e Departamento se relacionam com @ManyToMany e me gera uma associativa Unidade_Departamento contendo apenas as 2 PK de cada tabela me gerando uma chave composta… bom ate ai tudo bem, eu consigo criar as tebelas no banco que eh uma beleza, o meu problema eh fazer um relacionamento dessa chave composta com uma tabela demonimada SETOR e gerar uma associativa Unidade_Departamento_Setor com 3 chaves compostas me gerando uma associação “mascarada” terciaria… porem com 2 associativas…
vou mostrar oque eu fiz ateh agora para gerar a primeira associativa, e gostaria que vcs me exclarecesem como fazer para gerar uma associativa apartir desta outra!
UNIDADE
@Entity
@Table(name = "unidade")
@SequenceGenerator(name = "unidade_seq", sequenceName = "unidade_seq")
public class Unidade implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "unidade_seq")
@Column(name = "id_unidade")
private Long id;
@ManyToMany(fetch= FetchType.EAGER)
@JoinTable(name="unidadeDepartamento",joinColumns={@JoinColumn(name="id_unidade")},
inverseJoinColumns={@JoinColumn(name="id_departamento")})
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private List<Departamento> departamento = new ArrayList<Departamento>();
//GETTERS and SETTERS
}
DEPARTAMENTO
@Entity
@Table(name="departamento")
@SequenceGenerator(name="departamento_seq" , sequenceName="departamento_seq")
public class Departamento implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO , generator="departamento_seq")
@Column(name="id_departamento")
private Long id;
@ManyToMany(fetch= FetchType.EAGER)
@JoinTable(name="unidadeDepartamento", joinColumns={@JoinColumn(name="id_departamento")},
inverseJoinColumns={@JoinColumn(name="id_unidade")})
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private List<Unidade> unidade = new ArrayList<Unidade>();
//GETTERS and SETTERS
}
UNIDADE_DEPARTAMENTO
@Embeddable
public class UnidadeDepartamento implements Serializable {
@ManyToOne(fetch= FetchType.EAGER)
@JoinColumn(name="id_unidade")
@Cascade(CascadeType.ALL)
private Unidade unidade;
@ManyToOne(fetch= FetchType.EAGER)
@JoinColumn(name="id_departamento")
@Cascade(CascadeType.ALL)
private Departamento departamento;
//GETTERS and SETTERS
}
UnidadeDepartamentoComposta
@Entity
public class UnidadeDepartamentoComposta implements Serializable {
@EmbeddedId
private UnidadeDepartamento unidadeDepartamentoComposta;
//GETTERS and SETTERS
}
nessa entidade UnidadeDepartamentoCOmposta eu tentei fazer um relacionamento com o Setor e depois gerar a associativa UnidadeDepartamentoSetor porem nao consigo fazer isso huahuahua... alguem tem ideia ou ja fez algo parecido? obrigado...