Javafree
Página Inicial do Fórum > Frameworks, APIs e IDE's

Hibernate - SequenceGenerator e EmbeddedId



Criar novo tópico   Responder tópico


  1. gustavol
    Posts:2


    Comment Arrow

    Publicado em: 28/04/2016 11:02:57

    Olá,

    Estou desenvolvendo um sistema num banco de dados já existente e estou com dificuldade de usar uma sequencia do banco dentro de um mapeamento Embeddable do Hibernate.

    Sempre que tento inserir um novo registro o valor do idPessoa (PES_ID) fica zerado, ele não aciona a sequencia.

    Alguém sabe como resolver este problema?

    Classe da tabela Principal:


    Classe Embeddable com a Sequencia


    Grato!

  1. Comment Arrow

    Publicado em: 27/06/2016 12:51:13

    Fala mano, blz?

    Então vou tentar te explicar porque você esta implementando errado a anotação @Embeddable.

    Primeiro uma observação: Notei que esta usando o valor default da implementação do Serializable "private static final long serialVersionUID = 1L;" . Evite esse tipo de pratica, em apps pequenas não costuma dar crash, mas mesmo assim procure gerar valores genéricos para suas classes.

    Agora sim focando no teu problema, acredito que você já sabia a parte teorica sobre @Embeddable então vou pular essa parte. Você simplesmente não pode usar @Embeddable e @EmbeddedId com um @GeneratedValue. Por que como você viu vai da merda,
    a JPA espera que você forneça esses valores para o objeto e vai ignorar a sua anotação @GeneratedValue.

    Mas como resolver esse problema?

    Você precisa passar o ID já montado pro seu objeto quando for inserir o registro no banco de dados, a formar mais pratica é implementar no DAO do seu objeto uma consulta
    para obter o proximo ID para a coluna "PES_ID" e ai sim persistir o registro.

    Espero ter conseguido lhe explicar sem te deixar confuso, segue um código de exemplo:



  1. Relacionados