by Guest » 08 Jan 2025, 09:17
Ich habe zwei Entitäten in JPA, Klasse1 und Klasse2, mit den folgenden Strukturen:
Code: Select all
// class1
@Embeddable
public class Class1Id {
@Column(name = "col_one")
String column1;
@Column(name = "col_two")
String column2;
}
@Entity
public class Class1 {
@EmbeddedId
Class1Id class1Id;
@OneToMany(mappedBy = "class1")
List class2List;
}
Code: Select all
// class2
@Embeddable
public class Class2Id {
@Column(name = "col_one")
String column1;
@Column(name = "col_three")
Integer column3;
}
@Entity
public class Class2 {
@EmbeddedId
Class2Id class2Id;
@ManytoOne
@JoinColumn(name = "col_one", referencedColumnName = "col_one")
Class1 class1;
}
Ich möchte eine Viele-zu-Eins-Beziehung zwischen Klasse1 und Klasse2 erstellen, aber nur mit Spalte1 (d. h. col_one), was sowohl in Klasse1 als auch in Klasse2 üblich ist.
Gibt es eine Möglichkeit, diese beiden Klassen in JPA nur mit Spalte1 zu verknüpfen, auch wenn sie unterschiedliche EmbeddedId-Strukturen haben? Wie kann ich diese Beziehung richtig abbilden?
Ich habe zwei Entitäten in JPA, Klasse1 und Klasse2, mit den folgenden Strukturen:
[code]// class1
@Embeddable
public class Class1Id {
@Column(name = "col_one")
String column1;
@Column(name = "col_two")
String column2;
}
@Entity
public class Class1 {
@EmbeddedId
Class1Id class1Id;
@OneToMany(mappedBy = "class1")
List class2List;
}
[/code]
[code]// class2
@Embeddable
public class Class2Id {
@Column(name = "col_one")
String column1;
@Column(name = "col_three")
Integer column3;
}
@Entity
public class Class2 {
@EmbeddedId
Class2Id class2Id;
@ManytoOne
@JoinColumn(name = "col_one", referencedColumnName = "col_one")
Class1 class1;
}
[/code]
Ich möchte eine Viele-zu-Eins-Beziehung zwischen Klasse1 und Klasse2 erstellen, aber nur mit Spalte1 (d. h. col_one), was sowohl in Klasse1 als auch in Klasse2 üblich ist.
Gibt es eine Möglichkeit, diese beiden Klassen in JPA nur mit Spalte1 zu verknüpfen, auch wenn sie unterschiedliche EmbeddedId-Strukturen haben? Wie kann ich diese Beziehung richtig abbilden?