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

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:

[code]@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;
[/code]

[code]@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;
[/code]

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.

Acho que você consegue fazer isto com o PrimaryKeyJoinColumn:

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

Perfeito wagnerfrancisco. Funcionou.
Obrigado man!