मैं हाइबरनेट करने के लिए नया हूं और एक-से-कई और कई-से-एक संबंधों का उपयोग करने की आवश्यकता है। यह मेरी वस्तुओं में एक द्वि-दिशात्मक संबंध है, ताकि मैं किसी भी दिशा से पार कर सकूं। mappedBy
इसके बारे में जाने के लिए अनुशंसित तरीका है, हालाँकि, मैं इसे समझ नहीं पाया। क्या कोई समझा सकता है:
- इसका उपयोग करने के लिए अनुशंसित तरीका क्या है?
- इसका क्या उद्देश्य है?
मेरे उदाहरण के लिए, यहां एनोटेशन के साथ मेरी कक्षाएं हैं:
Airline
OWNS कईAirlineFlights
- कई
AirlineFlights
से संबंधित एकAirline
एयरलाइन :
@Entity
@Table(name="Airline")
public class Airline {
private Integer idAirline;
private String name;
private String code;
private String aliasName;
private Set<AirlineFlight> airlineFlights = new HashSet<AirlineFlight>(0);
public Airline(){}
public Airline(String name, String code, String aliasName, Set<AirlineFlight> flights) {
setName(name);
setCode(code);
setAliasName(aliasName);
setAirlineFlights(flights);
}
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="IDAIRLINE", nullable=false)
public Integer getIdAirline() {
return idAirline;
}
private void setIdAirline(Integer idAirline) {
this.idAirline = idAirline;
}
@Column(name="NAME", nullable=false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = DAOUtil.convertToDBString(name);
}
@Column(name="CODE", nullable=false, length=3)
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = DAOUtil.convertToDBString(code);
}
@Column(name="ALIAS", nullable=true)
public String getAliasName() {
return aliasName;
}
public void setAliasName(String aliasName) {
if(aliasName != null)
this.aliasName = DAOUtil.convertToDBString(aliasName);
}
@OneToMany(fetch=FetchType.LAZY, cascade = {CascadeType.ALL})
@JoinColumn(name="IDAIRLINE")
public Set<AirlineFlight> getAirlineFlights() {
return airlineFlights;
}
public void setAirlineFlights(Set<AirlineFlight> flights) {
this.airlineFlights = flights;
}
}
AirlineFlights:
@Entity
@Table(name="AirlineFlight")
public class AirlineFlight {
private Integer idAirlineFlight;
private Airline airline;
private String flightNumber;
public AirlineFlight(){}
public AirlineFlight(Airline airline, String flightNumber) {
setAirline(airline);
setFlightNumber(flightNumber);
}
@Id
@GeneratedValue(generator="identity")
@GenericGenerator(name="identity", strategy="identity")
@Column(name="IDAIRLINEFLIGHT", nullable=false)
public Integer getIdAirlineFlight() {
return idAirlineFlight;
}
private void setIdAirlineFlight(Integer idAirlineFlight) {
this.idAirlineFlight = idAirlineFlight;
}
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="IDAIRLINE", nullable=false)
public Airline getAirline() {
return airline;
}
public void setAirline(Airline airline) {
this.airline = airline;
}
@Column(name="FLIGHTNUMBER", nullable=false)
public String getFlightNumber() {
return flightNumber;
}
public void setFlightNumber(String flightNumber) {
this.flightNumber = DAOUtil.convertToDBString(flightNumber);
}
}
संपादित करें:
डेटाबेस स्कीमा:
AirlineFlights के पास IdAirline है जैसा कि विदेश में है और Airline के पास कोई IdAirlineFlights नहीं है। यह मालिक / पहचान इकाई के रूप में AirlineFlights बनाता है?
सैद्धांतिक रूप से, मैं चाहूंगा कि एयरलाइन एयरलाइन एयरलाइंस का मालिक हो।