1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Herança com Hibernate

Eai pessoal estou com um problema aqui com o Hibernate. Na realidade é mais um capricho meu. Segue abaixo o meu diagrama de classes para facilitar o entendimento:

https://www.filepicker.io/api/file/044G68ZRvOhXv0hd08fo

E abaixo as classes implementadas:

Classe Pessoa

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Table(name = "pessoas")
public abstract class Pessoa implements Serializable{

    @Id
    @Column(name = "id_pessoa")
    private int idPessoa;

    @Column(name = "nome")
    private String nome;

    @Column(name = "email")
    private String email;

    public Pessoa() {
    }

}

Classe Usuario

@Entity
@Table(name = "usuarios")
public class Usuario extends Pessoa implements Serializable{

    @Column(name = "login")
    private String login;

    @Column(name = "senha")
    private String senha;

    @Column(name = "cpf")
    private String CPF;

    @Temporal(value = TemporalType.DATE)
    @Column(name = "data_nascimento")
    private Calendar dataNasc;

    public Usuario() {
    }
}

Classe Contato

@Entity
@Table(name = "contatos")
public class Contato extends Pessoa implements Serializable {

    @Column(name = "cargo")
    private String cargo;

    @ManyToOne
    @JoinColumn(name = "id_cliente")
    private Cliente cliente;

    public Contato() {
    }
}

Como podem ver as classes são simples. Eu utilizo o mapeamento Tabela por Classe Concreta que faz com que os atributos da classe abstrata sejam herdados pelas classes filhas nas tabelas do banco de dados. Ou seja, são criadas duas tabelas: Contato e Usuário.

Mas o problema é que quando eu gero as tabelas no banco, os id's gerados para a tabela Contato e Usuario, ficam com o nome de "id_pessoa" e eu gostaria de poder alterar os nomes para "id_contato" e "id_pessoa".

  • pois é companheiro tem algumas coisinhas erradas ai mas de uma olhada nesses links eles devem de ajudar a chegar a solução

    http://altieresm.wordpress.com/2011/07/09/implementando-heranca-com-hibernate/ http://blog.caelum.com.br/jpa-com-hibernate-heranca-e-mapeamentos/

    qualque duvida poste novamente

    Cristian Urbainski   27 de fev de 2014
  • cara pelo que li tempos atraz não tem como subscrever a campo da pessoa no caso o id e se realmente vc quer que fique cada um com seu id proprio tira do pai e coloca nos filhos

    Jfestrela Cestrela   27 de fev de 2014
  • Cristian, o seu primeiro link eu ja havia consultado antes, alias foi com ele que eu aprendi os outros tipos de mapeamentos. E eu não entendi o que tem de errado com meu código. Podes me dizer?

    petros   27 de fev de 2014
  • Jfestrela, é uma pena. Mas enfim, nem tudo é como a gente quer. É só o nome da coluna id mesmo.

    petros   27 de fev de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java hibernate ou faça a sua própria pergunta.