Problema com get e set?

Estou desenvolvendo um sistema de autenticação de horários e o meu problema esta em que ele autentica a primeira informação de forma correta porem as que seguem ele criar um novo registros ou seja em vez de fazer um germe ele esta persistindo vi que preciso setar o id da linha em questão mais não estou conseguindo espero que alguém posso me ajudar, segue a lógica que estou usando.

List<Folha> findDateUser = folhaService
                            .findByDateAndUser(data, usuario.getId());

for(Folha listaCompleta : findDateUser)
{	
	if (listaCompleta.getData() == null) 
	{    		
		listaCompleta.setData(data);
		listaCompleta.setUsuario(usuario);	   
		folhaDAO.persistir(listaCompleta);
	} 
	else if (listaCompleta.getData() != null) 
	{
		listaCompleta.getIdFolha();
		listaCompleta.setIdFolha(long idFolha);
		listaCompleta.setEntrada(entrada);		
		folhaDAO.update(listaCompleta);
	}
}

vejam que estou tentando fazer um set no idFolha porem isso não esta funcionando

Só uma ideia: ao invés de fazer com que a tabela que recebe o registro do ponto tenha uma PK auto incrementável, por que não criar uma chave que seja composta pelo identificador do funcionário concatenado com a data do registro do ponto.
Exermplo

idFuncionario = 1008
Data do registro: 10/04/2017

PK registro = 100810042017

Obviamente, esta PK não poderia se repetir, logo, você sempre teria uma chave única e poderia gerenciar os horários registrados de forma mais clara e fácil.