Duvida hibernate
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
Curtidas 0
Respostas
Davi Costa
15/11/2010
Ismael vamos por partes,
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
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
Dyego Carmo
15/11/2010
Opa !
Conseguiu resolver ?
Conseguiu resolver ?
GOSTEI 0
Ismael Oliveira
15/11/2010
OK!
Vlw pela ajuda!
GOSTEI 0
Dyego Carmo
15/11/2010
Por favor marque como resolvido !
GOSTEI 0