最近我在使用Spring-Data
,
情况如下所述:
User
和Wallet
。Admin user
以外的每个用户都有Parent user
。Admin User
没有父用户。由于有多个交易同时进行,因此有可能多个用户正在访问钱包表的相同记录,如下所述:
例如
一位用户正在执行某项交易,佣金将记入管理员用户的(家长用户)电子钱包,
同时,Admin用户正在自己的钱包上执行借记操作。
因此,在这种情况下,最后执行的事务将持久保存到数据库中。
那么有什么方法可以使一个事务等待另一个事务吗?
以下是用户和钱包表如何相关的示例
@Entity(name = "user")
@Transactional(isolation = Isolation.SERIALIZABLE, propagation = Propagation.NOT_SUPPORTED)
public class User implements UserDetails, Comparable<User> {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name = "user_id")
@OrderColumn
private Long Id;
@OneToOne(fetch = FetchType.LAZY)
@OrderColumn
private Wallet wallet;
@OneToOne
@OrderColumn
private User parentUser;
.........Getters and setters........
}
@Entity
public class Wallet {
@Id
@GeneratedValue
@OrderColumn
private Long Id;
@OneToOne()
@OrderColumn
private User user;
//Other values.
....... GETTERS AND SETTERS.......
}
简而言之,我需要让一个事务等待另一个事务完成,如果已经有的话。
我尝试过隔离和传播,但没有产生所需的结果。
春季数据是否有可能让交易相互等待?
提前致谢。
答案 0 :(得分:1)
根据需要进行传播可以达到目的。
@Transactional(isolation = Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED)