Данные коллекции удаляются из базы данных после сброса сеанса. Кажется, Hibernate обнаружил, что оригинальная коллекция заменена, но в нашем устаревшем проекте мы не хотим, чтобы Hibernate выполнял удаление. Есть ли способ сделать это?
Ниже приведен пример кода:
public class Student{
@OneToMany(fetch=FetchType.EAGER)
@JoinColumn(name="student_id")
private List<Course> courses;
......
public static void main(String[] args){
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
Student s = (Student) session.get(Student.class, id);
//set new name
s.setName("new name");
// this is neccessary in our project, and I can't change it.
List<Course> newCourses = new ArrayList<Course>();
newCourses.add(...);
s.setCourses(newCourses); // replace the collection with new
//update s
session.update(s);
session.getTransaction().commit();
session.close();
}
}
После фиксации транзакции Hibernate удалит данные коллекции в базе данных, поскольку исходная коллекция заменяется новой, но я не хочу, чтобы Hibernate делал это. Есть ли способ сделать это?