Mapeo de muchos a uno para dos tablas hacia una entidad única.
Clase A{
private int campid;
private string name;
}
Clase B {
private int campid;
private string name;
}
Clase combo{
private int id;
private string phonenumber;
}
Estoy intentando hacerlo de esta manera
Clase A{
private int campid;
private string name;
@OneToMany(targetEntity = Combo.class, mappedBy ="a", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Combo combo;
}
Clase B {
private int campid;
private string name;
@OneToMany(targetEntity = Combo.class, mappedBy = "b", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Combo combo;
}
Clase combo{
private int id;
private string phonenumber;
@ManyToOne
@JoinColumn(name = "CampIdfk", insertable = true, updatable = true)
private A a;
@ManyToOne
@JoinColumn(name = "CampIdfk", insertable = true, updatable = true)
private B b;
}
Quiero almacenar el campid de la clase A y el campid de la clase B como clave externa en la tabla combo. Un campid puede tener varios números de teléfono.
Quiero hacer esto en Spring JPA, no entiendo cómo hacerlo.
davy.ai
Para lograr esto con Spring JPA, puedes mapear la relación entre las clases
A
yB
con la claseCombo
utilizando la anotación@ManyToOne
.Combo
debe tener dos relaciones@ManyToOne
conA
yB
. Aquí tienes un ejemplo:En este ejemplo,
Combo
tiene dos claves foráneasa_campid
yb_campid
que hacen referencia a las claves primarias deA
yB
, respectivamente. Ten en cuenta que la anotación@JoinColumn
especifica el nombre de la columna de la clave foránea.Con este mapeo, puedes crear entidades
Combo
que pertenezcan tanto aA
como aB
:“`java
A a = new A();
a.setCampid(1);
a.setName(“Camp A”);
B b = new B();
b.setCampid(2);
b.setName(“Camp B”);
Combo combo1 = new Combo();
combo1.setId(1);
combo1.setPhonenumber(“1234567890”);
combo1.setA(a);
Combo combo2 = new Combo();
combo2.setId(2);
combo2.setPhonenumber(“0987654321”);
combo2.setB(b);
a.getCombos().add(combo1);
b.getCombos().add(combo2);
repository.save(a);
repository.save(b);
“`