Hibernate save()在update()之后无法正常工作

时间:2019-05-21 04:30:46

标签: java mysql hibernate

有一张表格可以存储3年中不同百分比范围的等级,最近academic_yearsemester中添加了两个新列。现在,新列将为空,需要填充。这三年的数据几乎相同,因此要求以academic_year为增量来生成额外的2条记录。

代码就像

session.update(gradeDef);
transaction.commit();
session.flush();
session.close();

因此,对于临时修改,我们制作了gradeDef的副本,并递增了academic_year,并在更新后保存。

session.update(gradeDef);
session.save(gradeDef1);
session.save(gradeDef2);
session.save(gradeDef3);
transaction.commit();
session.flush();
session.close();

第一次调试时transaction.commit();花费了将近20秒的时间来执行,但是成功保存了,然后我们想到了在更新后刷新并清除会话,并且再次成功就花费了很多时间。

但是在两种情况下,新的academic_year都没有保存新记录,而其他列确实具有价值。

然后我们将代码修改为

session.save(gradeDef1);
session.flush();
session.clear();
session.save(gradeDef2);
session.save(gradeDef3);
session.update(gradeDef);    
transaction.commit();
session.flush();
session.close();

那是academic_year保存后才值的时间。在前两个过程中,即使是同一列的现有记录也不会得到更新。为什么会这样?

0 个答案:

没有答案