我想通过Parkingspace更新员工,但我没有成功。为什么我不能通过停车位更新员工?
员工类
@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
}
停车场班
@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
}
我想通过Parkingspace更新员工,但我没有成功。数据库没有变化。
...........
entityTransaction.begin();
parkingSpace.setEmployee(employee);
entityTransaction.commit();
.....
您必须在提交之前指定Session.saveOrUpdate()
。
此外,在这里你似乎改变了employee
关系:
parkingSpace.setEmployee(employee);
请注意,ParkingSpace
实体不是Employee
与其自身之间关系的所有者,因为employee字段在mappedBy
注释中指定OneToOne
:
@OneToOne(mappedBy = "parkingSpace",cascade = CascadeType.ALL,
fetch = FetchType.LAZY, optional = false)
private Employee employee;
因此调用parkingSpace.setEmployee(employee);
将毫无用处。
Employee
实体是所有者,您应指定:
employee.setParkingSpace(parkingSpace);