我正在调整一个Java程序,它将传入的数据写入Firebird数据库的表中。数据库连接由Hibernate抽象。用于保存数据的命令是saveOrUpdate()。其中一些传入数据是新的,需要插入,其他数据已经存在并且需要更新。
到目前为止,此工作正常。 从数据库中删除行时出现的问题,例如通过另一个线程。下次在删除之前已存在的数据Hibernate仍会尝试更新并抛出异常
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1[/code]
是否有可能告诉Hibernate删除条目,以便它下次不会尝试更新但是插入?
程序每次都不会打开新会话,但在访问存储数据时会检索当前会话:
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
// do sth with session
session.getTransaction().commit();
答案 0 :(得分:0)
在DB中保存数据的同时,如果不使用'saveorupdate',hibernate将首先尝试检测特定行是否已存在&相应地保存或更新行。