Hibernate を使用して、エンティティ Payment と Refund の間に多対多の関係があり、楽観的ロックを使用する@Version
@Entity
class Payment {
@Id
@GeneratedValue
public Long paymentId;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<Refund> refunds = new ArrayList<Refund>();
@Version
private long version;
}
@Entity
public class DRefund {
@Id
@GeneratedValue
private Long refundId;
@ManyToMany(mappedBy = "refunds")
private List<Payment> payments = new ArrayList<Payment>();
@Version
private long version;
}
Payment
Hibernate セッションを使用してデータベースからをロードし、それに を追加してから Hibernate セッションを使用Refund
して保存すると、dbRefund
のPayment
行も更新されます。
insert into Refund (version, refundId) values (?, ?, ?)
update Payment set version=? where paymentId=? and version=?
insert into Payment_Refund (payments_paymentId, refunds_refundId) values (?, ?)
はPayment
まったく変更されていません。これは必要ですか、またはこの動作を回避するために休止状態のマッピングを調整できますか? を削除する@Version
と、Payment
は更新されません。
助けてくれてありがとう!