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]