Hibernate 加载对象后,在更新时,将x实例的标识符从y更改为z并抛出
我刚开始冬眠。我正在尝试从数据库读取对象并进行更新。Hibernate 加载对象后,在更新时,将x实例的标识符从y更改为z并抛出,hibernate,Hibernate,我刚开始冬眠。我正在尝试从数据库读取对象并进行更新。 考虑这个双向映射 STUDENT ---> COURSES One Many hbm.xml的: Student.hbm.xml: <set name="courses" table="COURSES" inverse="false" > <key> <column name="STUDENT_ID" /&g
考虑这个双向映射
STUDENT ---> COURSES
One Many
hbm.xml的:Student.hbm.xml:
<set name="courses" table="COURSES" inverse="false" >
<key>
<column name="STUDENT_ID" />
</key>
<one-to-many class="Courses" />
</set>
从数据库加载学生对象后,我尝试将新课程添加到加载学生实例的然而,我确实得到了这个错误
Exception in thread "main" org.hibernate.HibernateException:
identifier of an instance of Course was altered from 1 to 0.
关于如何更新该学生实例的任何建议,以便该学生实例现在将分配2门课程。您如何在HBM中定义标识列?当然,你不需要存钱。只需更新学生。在hbm文件中,设置cascade=课程更新。让我知道这是否有效
Session session = Utility.getSessionFactory().openSession();
session.beginTransaction();
Student student = (Student)session.get(Student.class, 1);
Courses course = new Courses();
course.setPriceOpen(new Float("1.2"));
course.setPriceClose(new Float("1.1"));
course.setPrceChange(new Float("10.0"));
course.setDate(new Date());
course.setStudent(student);
student.getCourses().add(course);
session.save(course);
session.update(student);
session.getTransaction().commit();
session.close();
Exception in thread "main" org.hibernate.HibernateException:
identifier of an instance of Course was altered from 1 to 0.