como não pode existir gato sem um menino, vc pode setar o id do menino no gato , quando vc for criar um gato, pois o menino já existe.
qualquer coisa posta ai.
B
Bruno_Reis
tranquilo rjbcordeiro, obrigado
agora está claro
li na apostila da k19 que o mappedBy a gente pode usar como quiser, dependendo do tipo do relacionamento
uma outra coisa
neste link seu do javafree, tem a anotação @PrimaryKeyJoinColumn
por exemplo
a PK da tabela gato poderia receber a PK da tabela menino?
para isso que serve esta anotação?
isso é regra normal de banco de dados? pode ser feito para relacionamentos OneToOne?
uma PK de uma tabela filha receber uma PK de uma tabela pai, formando um relacionamento?
B
Bruno_Reis
acho meio estranho isso
PK recebendo PK de outra tabela
se eu tiver mais gatos? pertencidos a diversos donos?
acho bom não utilizar isso não
R
rjbcordeiro
então seu relacionamento não é 1 para 1
R
rjbcordeiro
se um menino tiver 1 ou mais gatos o relacionamento é @oneToMany.
Bom tudo vai depender de como é sua regra de negócio não?
R
rjbcordeiro
Bruno Reis:
acho meio estranho isso
PK recebendo PK de outra tabela
se eu tiver mais gatos? pertencidos a diversos donos?
acho bom não utilizar isso não
Na verdade isto não é estranho não, veja o seguinte:
Se , no caso, só vai existir um gato se tiver um dono e o relacionamento é 1 para 1, suponho que a chave primaria do seu Menino seja auto_incremento, então o proprio banco esta certificando que só vai existir um id para cada menino.
Então quando vc criar um gato e atrelar ele ao menino, se vc usar a mesma chave primaria do menino, vc já esta certificando que aquela chave ( do gato agora) é unica.
Voce pode fazer do jeito que vc quizer entende.
Mas no relacionamento 1 - 1 pode-se fazer de algumas formas:
1- cada um tem sua chave primaria
2- um pega a chave primaria do outro(menino com gato pode ) ehehe
vc pode verificar qual o melhor para vc
B
Bruno_Reis
valeu rjbcordeiro
obrigado pela força aí
muito grato!
Bruno
R
rjbcordeiro
olha fiz um exemplo aqui, não testei direito não, mas dá uma olhada:
@Entity@Table(name="menino")@SequenceGenerator(name="seq_menino_id",sequenceName="seq_menino_id",allocationSize=1,initialValue=1)publicclassMenino{@Id@GeneratedValue(generator="seq_menino_id",strategy=GenerationType.SEQUENCE)@Column(name="id_menino")privateLongidMenino;@OneToOne(fetch=FetchType.LAZY,mappedBy="menino")privateGatogato;privateStringnome;//gets and setts}//classe gato@Entity@Table(name="gato")publicclassGato{@Id@Column(name="id_gato")privateLongid;@Id@OneToOne@PrimaryKeyJoinColumn(name="id_gato",referencedColumnName="id_menino")privateMeninomenino;//gets and setts}