我们在项目中使用Hibernate和MySQL。我们使用saveOrUpdate()方法来更新数据。 我们的问题当我们首先更新现有数据时,我们正在检查一些条件。如果这些条件通过,我们会抛出错误,如下面的代码段。 另外我们正在保存数据。我们在saveOrUpdate()方法中调试并检查。它不会saveOrUpdate()。但有些数据如何保存到数据库中。
这是DAO图层
public List<Student> getOverlappingStudentDetails(String studentId, String classNumber){
Session session = sessionFactory.getCurrentSession();
Criteria criteria = session.createCriteria(Student.class, "student");
criteria.add(Restrictions.eq("student.id", studentId));
criteria.add(Restrictions.eq("student.classNumnber", classNumber));
return criteria.list();
}
public Student save(Student student) {
Session session = sessionFactory.getCurrentSession();
session.saveOrUpdate(student);
session.flush();
return student;
}
这是服务实施
private void checkForOverlappingStudentDetails(Student student) {
List<Student> overlappingStudents = studentDAO.getOverlappingStudentDetails(student.getStudentId(),student.getClassName());
if (overlappingStudents.size() >0 ) {
throw new ValidationException(student.getName() + " is already present." ;
}
}
抛出错误。但是,数据覆盖了数据库。是否有任何解决方案可以阻止数据进行更新。我们尝试了session.clear(),并在保存方法后使用了session.flush()方法。