Oi gente! Blzinha??
Preciso de ajuda!! Parei numa situaçao que não consigo entender e muito menos resolver!
Tenho a seguinte situação:
Um professor possui um vinculo com a Instituição academica e, atraves deste vinculo, pode atuar em mais de um curso.
O mapeamento ficou ± assim (usando JPA + Hibernate + Postgre):
@Entity
public class Professor implements Serializable {
@Id
@GeneratedValue
private int codigo;
@Column(length = 11)
private String matricula;
@OneToOne(cascade = CascadeType.ALL)
private VinculoDocenciaIES vinculoIES;
//outros objetos
//construtor e getsetters
}
@Entity
public class VinculoDocenciaIES implements Serializable {
@Id
@GeneratedValue
private int codigo;
@OneToMany(cascade = {CascadeType.ALL})
private List<Curso> cursosVinculados;
//outros objetos
//construtor e getsetters
}
@Entity
public class Curso implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenciaCurso")
private int codigo;
@Column(length = 150)
private String nome;
//outros objetos
//construtor e getsetters
}
O QUE ACONTECE:
- O hibernate criou as tabelas [Professor], [VinculoDocenciaIES], [Curso], [Vinculo_Curso];
- A tabela [Professor] tem o atributo Vinculo_codigo (FK para vinculo)
- Na tabela [Vinculo_Curso]:
- Não existe PK (coisa do hibernate!!)
- Existem somente duas colunas: vinculo_codigo (FK) e curso_codigo (FK
- Percebi nas restrições da tabela que ele cria ainda um outra Coluna chamada Vinculo_Curso_Codigo_key,
que ele não mostra no design (como se fosse de controle interno)
O ERRO:
- Insiro um professor que, logicamente, tem um Vinculo e este pode ter um ou mais cursos.
- Quando vou tentar inserir um outro professor que TAMBÉM é professor do mesmo curso que o primeiro cadastrado, dá erro de unicidade de chave primária,
justamente na coluna Vinculo_Curso_Codigo_key (que nao tenho acesso).
O QUE TENTEI:
- Já tentei mudar o tipo de relacionamento para ManyToMany (not resolved)
- Mudar a forma de gerencimento, criando uma outra Tabela chamada CursosVinculados, onde Vinculo tem relação OneToOne com Esta nova tabela
e ela tem uma lista de Cursos (not resolved too)
Não consigo achar solução.
Peço ajuda de quem estiver vendo algo que eu não estou…
Espero ter sido claro!!
Valeu!
Deus abençoe