Nome dos campos no BD quando relacionamento 1:1 usando EclipseLink 2.0 [RESOLVIDO]

2 respostas
rogerio_gentil

Olá. É obrigatório o uso do mesmo nome para campo id quando o id da segunda tabela é um FK?

Exemplo:
- tabela pessoa: id_pessoa (PK)
- tabela aluno: id_aluno (PK, FK(id_pessoa))

Ou seja, em Java:

@Entity
@Table(name = "pessoa", uniqueConstraints = {
   @UniqueConstraint(columnNames = {"cpf"})})
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "tipo", length = 1)
@XmlRootElement
@NamedQueries(...)
public abstract class Pessoa implements Serializable {
   
   private static final long serialVersionUID = 1L;
   
   @Id
   @Basic(optional = false)
   @NotNull
   @Column(name = "id_pessoa", nullable = false)
   private Long idPessoa;
@Entity
@Table(name = "aluno")
@DiscriminatorValue(value = "A")
@XmlRootElement
@NamedQueries(...)
public class Aluno extends Pessoa implements Serializable {
   
   private static final long serialVersionUID = 1L;
   
//   @Id
//   @Basic(optional = false)
//   @NotNull
//   @Column(name = "id_aluno", nullable = false)   
//   private Long idAluno;

Não posso criar o BD desta forma? Será que tenho que colocar o nome de id_pessoa na tabela aluno para funcionar um insert?

Estou perguntando porque me deparei com o caso em que tento setar um id para aluno (que é o mesmo de pessoa) e por causa da anotação JPA

@Column(name = "id_pessoa")

na classe Pessoa não consigo fazer o insert de Aluno no banco.

Att.

2 Respostas

wagnerfrancisco

Acho que você consegue fazer isto com o PrimaryKeyJoinColumn:

http://docs.oracle.com/javaee/6/api/javax/persistence/PrimaryKeyJoinColumn.html

rogerio_gentil

Perfeito wagnerfrancisco. Funcionou.
Obrigado man!

Criado 12 de agosto de 2012
Ultima resposta 12 de ago. de 2012
Respostas 2
Participantes 2