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…
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.
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
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.
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.
mudei a classe telefonePK para isso:
[code]@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;
…
[/code]
mas ta dando um erro :
[quote]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)])
[/quote]
bom galera se alguem puder me ajudar nessa pq desse erro nao tem muita coisa no google não