java – Não consigo adicionar registros no relacionamento com entidades no JPA

Então estou com uma questão que está me complicando a finalizar um projeto.

Tenho uma aplicação, que será o ponto digital da empresa que trabalho.
Só que no momento que estou utilizando o button para bater o ponto, minha aplicação substitui o usuário que bate primeiro pelo o último.

Estou programando em JavaFX e para persistir os dados e o MySql no JPA

package com.pontoDigital.Model.Employer;
import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import com.pontoDigital.Model.Data.DataYear;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@Entity
@Table(name = "funcionarios")
public class Funcionario  implements Serializable{
    
    private static final long serialVersionUID = -8364936441130394066L;
    
    @EqualsAndHashCode.Include
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    
    @Enumerated(EnumType.STRING)
    private Tipo tipo;
    
    private String cpf;
    
    @EqualsAndHashCode.Include
    private String nome;
    
    private String senha;
    
    @OneToOne(mappedBy = "funcionarios")
    private DataYear dataYear;
    
    //Access to administration or default
    @Enumerated(EnumType.STRING)
    private Status status;
    
    public Funcionario() {
        
    }
        
    public Funcionario(Tipo tipo, String cpf, String nome, String senha) {
        this.tipo = tipo;
        this.cpf = cpf;
        this.nome = nome;
        this.senha = senha;
    }
        
}

E essa próxima classe é aonde eu estou colocando minha foreign key:

package com.pontoDigital.Model.Data;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import com.pontoDigital.Model.Employer.Funcionario;

import lombok.Data;

@Entity
@Data
@Table(name = "data_year")
public class DataYear {
    
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    
    private Integer year;
    
    @OneToMany(mappedBy = "dataYear")
    private List<DataMonth> dataMonth;
    
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "funcionario_fk")
    private Funcionario funcionarios;
}

Essa e na minha controller é aonde estou interagindo com os dados:

public void botaoHoraRelogio() {
        interactionDAO = new InteractionDAO();
        dataYear = new DataYear();
        dataMonth = new DataMonth();
        dataDays = new DataDays();
        funcTest = StringUtilsOne.funcToAll(txtLoginUser, txtSenhaUser, interactionDAO);
        EntityManager em = getEntityManager();
        labelsInstanciaBtr();
            
        lblUser.setText(funcTest.getNome());
        dataYear.setYear(Integer.parseInt(sfd3.format(data)));
        dataMonth.setMonth(Integer.parseInt(sfd4.format(data)));
        dataDays.setDay(Integer.parseInt(sfd5.format(data)));
        
        dataYear.setFuncionarios(funcTest);
        dataMonth.setDataYear(dataYear);
        dataDays.setDataMonth(dataMonth);
    
        
        System.out.println("data resultado ano: " +dataYear.getYear());
        System.out.println("data resultado mês: " +dataMonth.getMonth());
        System.out.println("data resultado dia: " +dataDays.getDay());
        
        em.getTransaction().begin();
        em.merge(dataYear);
        em.merge(dataMonth);
        em.merge(dataDays);
        em.getTransaction().commit();
        em.close();
        
        KeyFrame frame = new KeyFrame(Duration.millis(1000), e -> atualizaHoras());
        Timeline timeline = new Timeline(frame);
        timeline.setCycleCount(Timeline.INDEFINITE);
        timeline.play();
    } 

A forma com a interação com banco está acontecendo fora de classe, é só porque estou vendo uma forma de resolver esse problema para começar a organizar essa parte, mas a ideia é que eu crie uma DAO para isso.

Se alguém conseguir me ajudar com esse problema, me passando uma forma viável ou até mesmo um link onde eu vou encontrar algo parecido. Fico imensamente agradecido