Olá. Meu primeiro post nesse fórum.
Estou iniciando um projeto onde o banco já foi construído (sem possibilidades de alteração) e tem chaves compostas para todo lado.
Não estou conseguindo fazer um simples relacionamento entre duas tabelas, onde uma FK faz parte da chave composta da segunda tabela. Segue Código:
Vamos partir da idéia que uma EMPRESA (tabela) tem vários SETORES (outra tabela)
CLASSE EMPRESA:
@Entity
public class Empresa implements Serializable {
@Id
@Column(name = "IDENTIDADE")
private Long id;
@Column(name = "NOME")
private String nome;
//Aqui o relaciomento com um campo que faz parte da PK
@OneToMany(targetEntity = Setor.class, mappedBy = "empresa")
private Set<Setor> setores = new HashSet<Setor>();
//getters e setters da classe
} //fim da classe Empresa
AGORA O RELACIONAMENTO ENTRE O SETOR
CLASSE SETOR:
public class Setor implements Serializable {
@Embeddable
static class SetorPK implements Serializable {
// ### Aqui está minha FK, dentro da PK ######
@ManyToOne(targetEntity = Empresa.class)
private Empresa empresa;
@Column(name = "SETOR", nullable = false, length = 20)
private String setor;
//getters setters da classe interna
}
@EmbeddedId
private SetorPK id;
@Column(name = "DESCRICAO", length = 150)
private String descricao;
//getters e setters da classe concreta
}// fim da classe Setor
Reparem que na classe Setor, a Empresa faz parte da chave (fogo trabalhar com chaves compostas)
Bem, a JPA (estou usando a implementação do Hibernate) não permite uma FK fazer parte da PK … ou seja, se eu tirar a Empresa da PK funciona perfeitamente, mas não posso já q o maldito banco está pronto !!!
Alguém pode me dar uma idéia de contornar esse problema???
Obrigado!
Júnior