Create Table A (
ID varchar(8),
Primary Key(ID)
);
Create Table B (
ID varchar(8),
A_ID varchar(8),
Primary Key(ID),
Foreign Key(A_ID) References A(ID)
);
Yukarıdaki SQL deyimlerini kullanarak iki tablo oluşturduğum ve B
sınıfı için Entity
sınıfı oluşturmak istediğim için şu üye niteliklerim var:Java JPA @OneToMany @ManyToOne karşılık mı gerekiyordu?
@Id
@Column(name = "ID", nullable = false, length = 8)
private String id;
@JoinColumn(name = "A_ID", referencedColumnName = "ID", nullable = false)
@ManyToOne(optional = false)
private A AId;
A
sınıfında Bire-bir ilişkiye karşılık vermem gerekiyor mu?
@Id
@Column(name = "ID", nullable = false, length = 8)
private String id;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "AId")
private List<B> BList; //<-- Is this attribute necessary?
@ManyToOne
için bir karşılıklı @OneToMany
'a sahip olmak gerekli veya iyi bir fikir mi? Tasarım kararını şimdi @OneToMany
açıklamalı öznitelikten çıkarmaya karar verirsem, bu bana daha da fazla ısırır mı?
1 ve @Pascal Thivent kontrol edin: Bunu gerekirse işaret için daha sonra ekleyebilirsiniz: bu benim asıl sorun oldu. – bguiz
Genellikle tek yönlü eşlemelerden mümkün olduğunca kaçınmaya çalışıyorum. Sadece datebase'deki bir şey ayrı bir birleştirme tablosuyla modellendiğinden (her ne sebeple olursa olsun) nesne modelimin de aynı şeyi yapması gerektiği anlamına gelmez. Yukarıdaki örnekte, bir OneToOne-Mapping tek yönlü çözüm için yeterli olacaktır (tabi ki bu, etki alanına bağlı olmalıdır). – lostiniceland