2012-08-14 36 views
0

我的使用案例:休眠:将还原已删除的行具有相同的ID

  1. 使用自动递增发生器插入,我不想改变它在我的Hibernate配置。
  2. 用户删除了ID为10的对象,并将此删除的对象保存到某处。
  3. 稍后,用户决定使用相同的ID恢复这个被删除的对象:10。
  4. 因为这个ID为10的对象已经从数据库中删除了,我怎样才能使用Hibernate将它插回到数据库,而使用自动增量生成器的hibernate配置(记住:我需要在数据库中保留这个对象的相同ID )?

感谢,

亚历

+0

可能重复http://stackoverflow.com/questions/3194721/bypass-generatedvalue-in-hibernate-merge-data-not-in-db? – poison 2012-08-14 15:59:03

+0

我知道这不是你问的,你可能有一个很好的理由需要THAT主键值,但是:不要设计你的代码,这样你就可以依赖数据库中具有给定主键值的对象/行。 (静态标识表除外。)在上述情况下,如果可能的话,我会尝试设计代码,以便用新密钥重新创建对象,并且“用户”获取新密钥。 – Marvo 2012-08-14 16:07:43

回答

1

我怀疑Hibernate将让你这么做,如果你不改变发电机。那么插入它,然后用直接SQL更新它并使任何Hibernate缓存失效呢?

+0

似乎没有Hibernate的方式来做到这一点(不是直接的sql方式)。无论如何感谢您的帮助。 – curiousman 2013-01-03 15:16:13

0

我怀疑Hibernate不会允许你这样做。但是你可以去编写sql查询来更新表格[如果你已经使用了表生成器]来改变当前可以使用的索引位置,但是它会让你感到复杂的逻辑,因为你总是必须跟踪哪些索引记录不是目前