【发布时间】:2017-03-04 13:36:56
【问题描述】:
您好,我目前正在花费大量时间来弄清楚为什么我的一对一休眠映射没有更新,你们能帮帮我吗?
顺便说一下,我是 hibernate 新手
这是 BookingModel.java
@Entity
@Table(name="booking")
public class BookingModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
String id;
@ManyToOne
@JoinColumn(name="teacher", nullable=false)
@JsonManagedReference
TeacherModel teacher;
@OneToOne(mappedBy="bookingModel", cascade=CascadeType.ALL)
ClassModel classModel;
@Column(name="start")
Date start;
@Column(name="end")
Date end;
@Column(name="title")
String title;
//getters and setters
}
这是 ClassModel.java
@Entity
@Table(name="class")
public class ClassModel {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="id")
private String id;
@ManyToOne
@JoinColumn(name="student")
private StudentModel student;
@OneToOne
@PrimaryKeyJoinColumn
BookingModel bookingModel;
//getters and setters
}
这是我想要实现的方法
BookingModel booking = find(scheduleId);
ClassModel classModel = classDao.getClass(classId);
classModel.setBookingModel(booking);
booking.setClassModel(classModel);
booking.setTitle("TEST");
update(booking);
setTitle 正在工作,但我的数据库中的类字段仍然为空
这是更新方法
@Transactional
@Override
public void bookClass(String classId, String scheduleId) {
org.springframework.security.core.userdetails.User user = (org.springframework.security.core.userdetails.User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
BookingModel booking = find(scheduleId);
ClassModel classModel = classDao.getClass(classId);
classModel.setBookingModel(booking);
booking.setClassModel(classModel);
booking.setTitle("TEST");
update(booking);
}
@Override
public void update(E entity) {
try{
Transaction t = currentSession().beginTransaction();
currentSession().update(entity);
t.commit();
}catch(Exception e){
e.printStackTrace();
}
}
提前谢谢大家
【问题讨论】:
-
发布完成更新方法
-
嗨@VikramSingh
-
你试过我的答案了吗??
-
hi @mibrahim.iti,在我的代码中,我只将 ClassModel 插入到 BookingModel
-
@RyanDelaCruz 但是你只更新 BookingModel 而不是更新 ClassModel (关系的所有者),我认为这是你的问题,你能添加这个更新(classModel)吗?更新(预订)下的代码;告诉我发生了什么?所以你将更新这两个实体而不仅仅是一个,告诉我在这种情况下会发生什么,谢谢:)
标签: java spring hibernate jpa orm