2017-12-30 10 views
0

Ich möchte den Mitarbeiter über Parkingspace aktualisieren, aber es gelingt mir nicht. Warum kann ich den Mitarbeiter nicht über den Parkplatz aktualisieren?JPA One to One Update-Vorgang

Mitarbeiter Klasse

@Entity 
public class Employee { 
@Id 
@GeneratedValue(strategy=GenerationType.TABLE) 
private int id; 
private String name; 
private String surname; 
private int salary; 

@OneToOne(fetch = FetchType.LAZY) 
@JoinColumn(name="park_id", unique=true) 
private ParkingSpace parkingSpace; 
...getter/setter 

    } 

PARKPLATZ Klasse

@Entity 
public class ParkingSpace { 
@Id 
@GeneratedValue(strategy = GenerationType.TABLE) 
private int id; 
private int parkingLot; 
private String location; 
@OneToOne(mappedBy = "parkingSpace",cascade = CascadeType.ALL, 
     fetch = FetchType.LAZY, optional = false) 
private Employee employee; 
....getter/setter 
} 

Ich möchte die Mitarbeiter über Parken aktualisieren, aber ich weiß nicht succeed.there keine Änderung in der Datenbank vorhanden ist.

........... 
entityTransaction.begin(); 
parkingSpace.setEmployee(employee); 
entityTransaction.commit(); 
..... 

Antwort

0

Sie müssen Session.saveOrUpdate() vor dem Festschreiben angeben.
Außerdem hier scheinen Sie die employee Beziehung zu ändern:

parkingSpace.setEmployee(employee); 

Beachten Sie, dass die ParkingSpace Einheit zwischen Employee und sich als Mitarbeiter Feld gibt nicht der Besitzer der Beziehung ist mappedBy in der OneToOne Anmerkung:

@OneToOne(mappedBy = "parkingSpace",cascade = CascadeType.ALL, 
     fetch = FetchType.LAZY, optional = false) 
private Employee employee; 

So parkingSpace.setEmployee(employee); Aufruf wird nutzlos sein.
Die Employee Einheit der Besitzer sein, sollten Sie angeben:

employee.setParkingSpace(parkingSpace); 
+0

Es gibt keine Änderung in der Mitarbeiter ist. Ich konnte es nicht verstehen. Haben nicht beide Seiten das Recht auf Zugriff und Änderungen? – omerstack

+0

Ah ok. Nein, beide Seiten haben kein Recht, Veränderungen zu reflektieren. Nur die Eigentümerseite darf. Ich habe meine Antwort aktualisiert. – davidxxx