Ajuda com classes de entidade

5 respostas
Vitao1718

seguinte pessoal estou com uma duvida que se resume no seguinte

tenho uma tabela pessoas e uma tabela telefones

a tabela telefones tem um id proprio do tipo bit e o id do cliente (chave estrangeira)

como faria para salvar um telefone, sendo que eu teria que salvar a pessoa primeiro e pegar o id
desta pessoa para salvar os telefones , bom por via de gambiarra até sei fazer daria um get MAX la e beleza
porém queria saber se tem como eu salvar os telefones usando um generator ou coisa do tipo com annotations ou outro…

5 Respostas

fbmanhani

Com annotations ficaria mais ou menos assim:

@Entity @Table(name = "NOME_TABELA_BANCO") @SequenceGenerator(name = "SEQ_TABELA", sequenceName = "SEQ_TABELA") public class Tabela extends IId { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_TABELA") @Column(name = "NOME DA COLUNA") private Integer id;
}

Veja se isso te ajuda em algo. Detalhe…o banco utilizado neste modelo é o Oracle…

Qualquer dúvida posta aí…

Abrax.

Vitao1718

entao como eu faria pra passar o codigo gerado aí para a tabela de telefones por exemplo
como uma herança sabe mas sei que herança tem como fazer com jpa to testando isso e

aparentemente, me corrija se eu estiver errado, como uso mysql esse seqgenerator nao funciona muito certo
porem notei que é necessária uma table como nome de sequence no banco
com a sequencia registrada na tabela, nao sei certo pq cada vez que rodo da um
negocio diferente

P

Se vc ta usando hibernate não se preocupa com isso. Se configurou o relacionamento corretamente, seja por annotattions ou por xml, basta que a sua entidade telefone tenha um atrbuto cliente para saber de quem é (ou o contrário). Ai quando vc mandar salvar o hibernate se vira pra deixar tudo certinho.

Vitao1718

tipo não estou usando hibernate não , porem acho que o problema é esse mesmo pq no telefone ta o id int e nao um objeto pessoa, vou tentar e posto aqui o resultado.

Vitao1718

mudei a classe telefonePK para isso:

@Embeddable
public class TelefonePK extends TelefonePKDAO implements Serializable {
    @Column(name = "tel_codigo", nullable = false)
    private boolean telCodigo;

    
    @ManyToOne
    @JoinColumn(name="pes_codigo",referencedColumnName="pes_codigo")
    private Pessoa pesCodigo;

...

mas ta dando um erro :

Exception [TOPLINK-93] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DescriptorException Exception Description: The table [telefones] is not present in this descriptor. Descriptor: RelationalDescriptor(bean.Pessoa --> [DatabaseTable(pessoas)])

bom galera se alguem puder me ajudar nessa pq desse erro nao tem muita coisa no google não

Criado 6 de outubro de 2008
Ultima resposta 8 de out. de 2008
Respostas 5
Participantes 3