1
resposta

Tabela funcionarios_unidades

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;
  }
}
1 resposta

Olá Jeronima, tudo bem?

Pelo que entendi do seu código, a tabela funcionarios_unidades é criada corretamente e a relação ManyToMany entre Funcionario e UnidadeDeTrabalho está sendo feita. No entanto, pode ser que você não esteja adicionando as unidades de trabalho corretamente ao funcionário.

Uma sugestão é verificar se você está criando as instâncias de UnidadeDeTrabalho corretamente e adicionando-as à lista de unidades de trabalho do funcionário. Além disso, é importante lembrar que você precisa persistir o funcionário após adicionar as unidades de trabalho para que as informações sejam salvas no banco de dados.

Caso você ainda esteja com dificuldades, sugiro que você poste mais informações sobre como está tentando adicionar as unidades de trabalho ao funcionário para que possamos ajudá-lo melhor.

Espero ter ajudado e bons estudos!