休眠分离会话



我正在尝试从其他表(来自用户的大量INNER JOIN-->tableX->tableY->表Z->产品(重新生成关系表user_product

我删除了user_product的内容,然后插入新值:

INSERT INTO user_product (column1, c2, c3) 
SELECT userId FROM users INNER JOIN...etc

然而,在寻找新的关系时,我需要使用来自user_product的先前数据。明确地我需要做一些类似(SELECT up.id from user_product WHERE up.id = u.id)的事情来过滤一些值。

有没有一种优雅的方法可以在冬眠中做到这一点?例如,在仍然能够访问原始数据的情况下,分离整个会话并删除那里的user_product?

实际上没有办法做到这一点,因为一旦运行insert语句,所有挂起的删除操作都将首先刷新。即使Hibernate不会这样做(您可以在本机查询上设置一个空的查询空间集(,难道不会因为记录仍然存在而将运行插入到违反约束的错误中吗?

最好是以不删除行的方式运行您尝试进行的任何类型的迁移,但可以重命名表(例如xxx_old(并创建一个新的空表,这样您就可以将感兴趣的行从一个表迁移到另一个表。

最新更新