@Entity
public class Menino {
@Id
private int id;
@OneToOne
private Gato gato;
@OneToOne
private Cachorro cachorro;
//métodos de acesso correspondentes
como fica a tabela menino?
irá possuir duas FK ?
mas, um menino pode ter “um ou outro” animal de estimação, só pode ter 1 de cada
neste caso umas das FK da tabela menino vai ficar “null”
pode isso?
pode uma FK ficar null?
Nesse caso o menino deve ter um tipo Animal, e nao uma especie ou outra. Polimorfismo.
mas, aí vem aquele problema de herança
“prefira composição em vez de herança”
como fazer isso com composição?
[quote=Bruno Reis]mas, aí vem aquele problema de herança
“prefira composição em vez de herança”
como fazer isso com composição?[/quote]
A composição nao se aplica nesse caso específico.
Voce pode criar um tipo abstrato Animal, Gato e Cachorro herda o Animal.
Gato gato = new Gato();
//Sets
Menino menino = new Menino();
menino.setAnimal(gato);
//ou
menino.setAnimal(cachorro)