[Hibernate] Salvar classe filha que herda de uma classe JOINED

Pessoal,

Estou com o seguinte problema, tenho a seguinte estrutura:

Uma classe abstrata somente com id:

[code]@MappedSuperclass
public class AbstractEntity
{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;

}[/code]

A classe Usuário que herda a AbstractEntity e é do tipo JOINED:

@Entity @Inheritance(strategy=InheritanceType.JOINED) public class Usuario extends AbstractEntity { // Atributos }

E tenho a classe funcionário que herda de usuário:

@Entity public class Funcionario extends Usuario { // Atributos }

Dessa maneira o Hibernate cria uma tabela para o usuário e outra para o funcionário. Eu já tenho usuários cadastrados e gostaria que eles fossem funcionários, porém quando eu faço isso da o seguinte erro:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry ‘6’ for key ‘UK_37635c6150464f8cb9538e9d441’

Creio que seja por causa do GeneratedValue. Alguém sabe um meio para resolver isso? Segue código que estou usando para salvar o funcionário:

[code]@Get("/fornecedores/funcionarios/add/{id}")
public void insertFuncionario(Long id) throws CommonException
{
Usuario dbUsr = this.usuarioRepository. find(id);
Fornecedor dbForn = this.fornecedorRepository.find(this.fornecedorSession.getFornecedor().getId());

Funcionario func = new Funcionario();
Fornecedor forn = new Fornecedor();	

forn.setId(dbForn.getId());
func.setFornecedor(forn);
func.setNome(dbUsr.getNome());
func.setDataCadastro(dbUsr.getDataCadastro());
func.setDataNascimento(dbUsr.getDataNascimento());
func.setDescricao("");
func.setEmail(dbUsr.getEmail());
func.setId(dbUsr.getId());
func.setLogin(dbUsr.getLogin());
func.setPassword(dbUsr.getPassword());
func.setPerfilUsuario(dbUsr.getPerfilUsuario());

this.funcionarioRepository.saveOrUpdate(func);
result.include("mensagem", this.localization.getMessage("mensagem.crudFuncionarioAdicionadoAoFornec", func.getNome()));
result.redirectTo(FornecedoresController.class).view(func.getFornecedor().getId());  			

} [/code]