[RESOLVIDO] @OneToOne CascadeType

Olá Pessoal, bom dia!

Tenho uma classe que representa um funcionário, este por sua vez possui uma função.
Tenho uma classe Funcionário, e uma Classe Função.

Beleza, eu consigo cadastrar e atualizar normalmente os dados, o problema é que quando eu mando atualizar os dados, ele duplica os registros na tabela Funcao na base de dados.
Por exemplo, na tabela Funcao tem as chaves para Cargo e Faixa Salarial, e elas vão se duplicando cada vez que atualizo o funcionário.

Segue minhas classes

@Entity
@PrimaryKeyJoinColumn(name = "idBeneficiario")
public class Funcionario extends Beneficiario {
	/* ... */

	@OneToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
	@JoinColumn
	private Funcao funcao;

	/* ... */
}

@Entity
public class Funcao {

	/* ... */	
	
	@OneToOne(cascade={CascadeType.PERSIST, CascadeType.REFRESH})
	@JoinColumn
	private Cargo cargo;
	
	@OneToOne(cascade={CascadeType.PERSIST, CascadeType.REFRESH})
	@JoinColumn
	private FaixaSalarial faixaSalarial;

	/* ... */
}

Acredito que o problema esteja no CascadeType.
Alguém pode me dar alguma dica?

Desde já agradeço!

isso costuma ser problema com ID quando vc da um “saveorupdate” se ele não tiver o id ele salva de novo o registro como “novo”

Abraços

Você popula seu objeto com os dados da base pra depois alterar e gravar?

Qual a PK da sua tabela Função?

cara,

troque seu cascade por isso,

cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}

e seu objeto Funcao quando for adicionado ao seu objeto Funcionario, ele deve ser um objeto persistente, vc vai ter que pega-lo por um merge ou find.

t+

Obrigado cara, era isso mesmo! Esqueci de colocar o ID no form.

E alissonvla, obrigado pela dica!

Valeu Pessoal!
Abraços!