Ich arbeite an Spring Boot + Hibernate-Anwendung. Ich wollte wissen, wie ich die OneToMany-Beziehung einschließlich des Fremdschlüssels speichern kann.OneToMany Mapping funktioniert nicht im Frühjahr Boot + Hibernate
Ich habe 2 Klassen Mitarbeiter und Adresse, die OneToMany Beziehung hat.
@Entity
public class Employee {
@Id
@GeneratedValue
private int empId;
private String name;
private String designation;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "employee",fetch=FetchType.EAGER)
private List<Address> addresses = new ArrayList<>();
public List<Address> getAddresses() {
return addresses;
}
public void setAddresses(List<Address> addresses) {
this.addresses = addresses;
}
}
@Entity
public class Address {
@Id
@GeneratedValue
private int addressID;
private String city;
private String country;
@ManyToOne(cascade = CascadeType.ALL,fetch=FetchType.LAZY)
@JoinColumn(name = "empId")
private Employee employee;
public Employee getEmployee() {
return employee;
}
public void setEmployee(Employee employee) {
this.employee = employee;
}
}
Dao Code:
@Repository
public class EmployeeDao {
@Autowired
private SessionFactory sessionFactory;
public Employee save(Employee employee) {
Session session = getSession();
session.persist(employee);
return employee;
}
private Session getSession() {
return sessionFactory.getCurrentSession();
}
}
Wenn ich Daten versuche json Gesuch mit speichern als:
{
"name": "Kamal Verma",
"designation": "SAL1",
"addresses": [
{
"city": "Noida",
"country": "India"
}
]
}
Seinem feinen Arbeiten ohne Fehler aber in der Datenbank in der Adresstabelle EMPID ist Null.
Bitte lassen Sie mich wissen, was ich falsch mache, da der Fremdschlüssel in der Adressentabelle nicht gespeichert wird.
Danke, Kamal
Hallo Kishan, Vielen Dank für Ihren Vorschlag. Es funktionierte. Wollte nur nach dem Posten dieser Frage wissen, ich habe auch die Lösung dafür gefunden, indem Sie den Service als öffentlichen Mitarbeiter speichern (Mitarbeiter) { \t \t Set
Adressen = employee.getAddresses(); \t \t für (Adresse Adresse: Adressen) { \t \t \t address.setEmployee (Angestellter); \t \t} \t \t zurück dao.save (Mitarbeiter); \t} Also, wollte überprüfen, was die beste Praxis sein sollte, um dies in Pojo oder auf Service zu setzen. –Ich ziehe es vor, es in das POJO zu legen, weil das garantiert, dass das Feld Adresse Mitarbeiter immer eingestellt wird - nur für den Fall, dass Sie den Mitarbeiter auch anderweitig speichern. – Kishan