有一张表格可以存储3年中不同百分比范围的等级,最近academic_year
和semester
中添加了两个新列。现在,新列将为空,需要填充。这三年的数据几乎相同,因此要求以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
保存后才值的时间。在前两个过程中,即使是同一列的现有记录也不会得到更新。为什么会这样?