Pelo que entendi, toda vez que inserir uma unidade de trabalho para um funcionário deveria ser preenchido na tabela funcionarios_unidades um registro com a foreign key do funcionario e da unidade, certo? Porém isso não está ocorrendo, e essa tabela funcionarios_unidades está ficando sempre vazia. Abaixo como está sendo criada a tabela dentro da classe Funcionario:
@Entity
@Table(name = "funcionarios")
public class Funcionario {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String nome;
private String cpf;
private Double salario;
private LocalDate dataContratacao;
@ManyToOne
@JoinColumn(name = "cargo_id", nullable = false)
private Cargo cargo;
@Fetch(FetchMode.SELECT)
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "funcionarios_unidades", joinColumns = {
@JoinColumn(name = "fk_funcionario") },
inverseJoinColumns = { @JoinColumn(name = "fk_unidade") })
private List<UnidadeDeTrabalho> unidadeDeTrabalho;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public Double getSalario() {
return salario;
}
public void setSalario(Double salario) {
this.salario = salario;
}
public LocalDate getDataContratacao() {
return dataContratacao;
}
public void setDataContratacao(LocalDate dataContratacao) {
this.dataContratacao = dataContratacao;
}
public void setCargo(Cargo cargo) {
this.cargo = cargo;
}
public List<UnidadeDeTrabalho> getUnidadeDeTrabalho() {
return this.unidadeDeTrabalho;
}
public void setUnidadeDeTrabalho(List<UnidadeDeTrabalho> unidadeDeTrabalho) {
this.unidadeDeTrabalho = unidadeDeTrabalho;
}
@Override
public String toString() {
return "ID: " + this.id + " Nome: " + this.nome;
}
}