Fórum Duvida hibernate #390511
15/11/2010
0
Ola pessoal!
To com uma duvida com relação ao hibernate.
Tenho uma classe endereço como segue abaixo:
@Embeddablepublic class Endereco{...
e na minha classe cliente tem um atributo do tipo Endereco.
Eu gostaria de saber como eu faço para sobrescrever o nome da coluna dos atributos da classe endereco?ja que a classe endereco vai ser utilizada por varias outras classes.
Obrigado pela atenção!
Ismael Oliveira
Curtir tópico
+ 0Posts
16/11/2010
Davi Costa
existem algumas opções para fazer oq vc quer:
*A primeira é deixar na tabela Endereço somente os campos (colunas) que são comuns a todos os outros casos.
A outra opção é usar herança nas tabelas. Nessa segunda opção vc vai ter duas opções:
1 Mantém tudo em uma tabela só (não é muito bom para sua modelagem):
Todas as propriedades de todas as super e subclasses são mapeadas em uma mesma tabela, instancias são distinguidas por uma anotação especial para as colunas, denominada @DiscriminatorColumn.
@Entity @Inheritance(strategy=
InheritanceType.SINGLE_TABLE) @DiscriminatorColumn( name="tipo", discriminatorType=
DiscriminatorType.STRING ) @DiscriminatorValue("Todos") public class Animal{ ... }
@Entity @DiscriminatorValue("Mamifero") public class Mamifero extends Animal{ ... }
2 Mas há a na minha opnião a melhor estratégia de Subclasses interligadas. Essa estratégia cria uma tabela para cada subclasse, as quais são interligadas à superclasse através da chave primária. Um exemplo de código seria o seguinte:
@Entity @Inheritance(strategy=
InheritanceType.JOINED) public class Endereco implements Serializable { ... }
@Entity @PrimaryKeyJoinColumn
(name="ENDERECO_ID") public class EnderecoCliente extends Endereco{ ... }
Desse modo vc vai manter na tabela Endereco somente o que é genérico a todos e nas suas SubClasses o que for específico de cada um.
Espero ter ajudado.
Att Davi
Gostei + 0
18/11/2010
Dyego Carmo
Conseguiu resolver ?
Gostei + 0
19/11/2010
Ismael Oliveira
Gostei + 0
10/12/2010
Dyego Carmo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)