Ich habe zwei Modelle.Hibernate (JPA) multiple @ OneToMany für das gleiche Modell
@Entity
public class Student
{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
protected long id;
@?
protected Address homeAddress;
@?
protected Address schoolAddress;
}
@Entity
public class Address
{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
protected long id;
@?
protected List<Student> students;
}
Was JPA/Hibernate Annotations muss ich über homeAddress
, schoolAddress
und students
setzen, um die Verbandsarbeit zu machen?
Natürlich habe ich viele Dinge ausprobiert und nichts hat funktioniert. Zum Beispiel Unable to find column with logical name: student_homeAddress_id in org.hibernate.mapping.Table(Address) and its related supertables and secondary tables
@ManyToOne
@JoinColumn (name="student_homeAddress_id", updatable = false, insertable = false)
protected Address homeAddress;
@ManyToOne
@JoinColumn (name="student_schoolAddress_id", updatable = false, insertable = false)
protected Address schoolAddress;
und
@OneToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}, fetch = FetchType.EAGER)
@JoinColumns({
@JoinColumn(name = "student_homeAddress_id", referencedColumnName = "student_homeAddress_id"),
@JoinColumn(name = "student_schoolAddress_id", referencedColumnName = "student_schoolAddress_id")})
@IndexColumn(name="students_index")
protected List<Student> students;
yealds Einstellung. versuchten auch mappedBy
verwenden, aber das nimmt ein einziges Argument (nicht mappedBy="student_homeAddress_id, student_schoolAddress_id"
tun.
Auch die JoinColumns
zur Student
Tablette sah in bewegten, aber ich bin nicht sicher, was die Anmerkungen wie für OneToMany und ManyToOne aussehen sollten wie ich mehrere Adressen gibt, die JoinColumns nicht viel Sinn machen
die Sache, die Arbeit haben, aber war die Schaffung nicht die Verbände hatte.
@OneToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}, fetch = FetchType.EAGER)
@JoinColumn(name="address_id")
@IndexColumn(name="students_index")
protected List<Student> students;
diese verwenden, wenn sie in der DB, die Modelle zu speichern, die student_homeAddress_id und student_schoolAddress_id waren immer Null, auch nachdem beide Enden gespeichert wurden (das Student- und Address-Modell).
Mein Gedanke ist, dass auf der Address
Tabelle wird es drei zusätzliche Spalten sein: student_homeAddress_id (die ID des Studenten in der Studententabelle für die homeaddress), student_schoolAddress_id (die ID des Studenten in der Studententabelle für die schoolAddress) und students_index (der 0-basierte Ort auf der Liste). Das sollte ausreichen, richtig?
Irgendwelche Ideen?
Vielen Dank!