我正在使用以下方法将对象集合保存到数据库中。
public Collection save(Collection instances) {
try {
this.getHibernateTemplate().saveOrUpdateAll(instances);
this.getHibernateTemplate().flush();
} catch (RuntimeException re) {
throw re;
}
return instances;
}
实例的主键由 HibernateTemplate 自动生成。在 JVM 启动之后,当第一次调用此方法时,Hibernate 运行以下查询以获取要在实例上使用的 Max 主键。
从 table_name 中选择 max(Primary Key ID)
但是第二次执行该方法时,我没有看到正在执行此查询。看起来休眠将这个值存储在会话中的某个地方。
现在,如果表由不同的进程(比如说存储过程或 SQL)更新,则对上述方法的所有后续调用都会失败,并出现 ORA-00001:违反唯一约束 (SCHEMANAME.PRIMARY_KEY_CONSTRAINT) 异常。如果 JVM 重新启动,Hibernate 会再次执行 max (Primary Key) 生成查询,一切正常。
有人可以帮助我做些什么,以确保每次执行该方法时(而不仅仅是第一次)都运行主键自动生成查询。谢谢。