我有一个表,其中有一个唯一的列"token",数据库中通过唯一约束来强制实施。在某些情况下,我需要更改现有行,使其具有与另一个现有行相同的令牌,将第二行更改为新值。
例如,我有:
id;token 0;'aaa' 1;'bbb'
我想要将id 0('aaa')改为具有令牌'bbb'。所以我需要将'bbb'更改为'jfeisefjse',然后我可以将'aaa'更改为'bbb'。这可以在Postgres中使用单个事务完成。
我已经尝试在代码中做同样的事情:在一个事务中,我从现有行(第1行)获取令牌,将其设置为随机值,我更新其他行(第0行)以具有第1行的令牌,然后提交。但是Hibernate不尊重我所做的提交顺序。它似乎总是首先运行对第0行的更新语句,而Postgres则抱怨违反了外键约束。
我该如何让Hibernate做到这一点?要么强制执行特定的更新语句顺序,要么采用其他方法?
注意:不能在两个事务中执行此操作(一个用于混淆第1行,另一个事务用于更新第0行)。
例如,我有:
id;token 0;'aaa' 1;'bbb'
我想要将id 0('aaa')改为具有令牌'bbb'。所以我需要将'bbb'更改为'jfeisefjse',然后我可以将'aaa'更改为'bbb'。这可以在Postgres中使用单个事务完成。
我已经尝试在代码中做同样的事情:在一个事务中,我从现有行(第1行)获取令牌,将其设置为随机值,我更新其他行(第0行)以具有第1行的令牌,然后提交。但是Hibernate不尊重我所做的提交顺序。它似乎总是首先运行对第0行的更新语句,而Postgres则抱怨违反了外键约束。
我该如何让Hibernate做到这一点?要么强制执行特定的更新语句顺序,要么采用其他方法?
注意:不能在两个事务中执行此操作(一个用于混淆第1行,另一个事务用于更新第0行)。