Relacionamento ManyToOne não persiste

0 respostas
O

Srs.

Tenho aqui uma estrutura de relacionamento da seguinte forma.

A tabela abstrata Pessoa.

Código:

@Entity
@Table(name = "pessoa")
@Inheritance (strategy=InheritanceType.JOINED)
@DiscriminatorColumn (name="tipo",discriminatorType=DiscriminatorType.CHAR, length=1)
@DiscriminatorValue (value="M")

public abstract class Pessoa implements Serializable{}

@OneToOne(cascade = CascadeType.ALL, mappedBy = "pessoa")
private Matriz matriz;
   
@OneToOne(cascade = CascadeType.ALL, mappedBy = "pessoa")
private Filial filial;

A tabela Matriz extendendo Pessoa.

Código:

@Entity
@Table(name = "matriz")
@DiscriminatorValue (value="M")
public class Matriz extends Pessoa implements Serializable {}

@OneToOne
@JoinColumn(name = "codigo", referencedColumnName = "codigo")
private Pessoa pessoa;

@OneToMany(mappedBy = "matriz", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Collection<Filial> filial;

A tabela Filial extendendo Pessoa e relacionando-se com a Matriz.

Código:

@Entity
@Table(name = "filial")
@DiscriminatorValue (value="F")
public class Filial extends Pessoa implements Serializable {}

@OneToOne
@JoinColumn(name = "codigo", referencedColumnName = "codigo")
private Pessoa pessoa;

@ManyToOne
@JoinColumn(name = "cod_matriz", referencedColumnName = "codigo", nullable = false)
private Matriz matriz;

O relalcionamento de herança esta funcionando corretamente entre as três tabelas, acontece que o relacionamento entre a Filial e a Matriz, quando se tenta persistir a classe Filial, simplesmente o atributo cod_matriz sempre grava no banco como null, não há nenhum tipo de erro, todos os outros atributos da classe são persistidos sem nenhum problema.

Será que este tipo de relacionamento (Filial x Matriz) é permitido no Toplink + JPA ?

Há alguma anotação específica para o relacionamento ManyToOne entre Filial e Matriz que seja necessária, levando-se em conta que as duas classes herdam de Pessoa ?

Abraços

Olavo Jr.

Criado 13 de maio de 2009
Respostas 0
Participantes 1