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;
}
PaymentHibernate セッションを使用してデータベースからをロードし、それに を追加してから 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は更新されません。
助けてくれてありがとう!