@Asyncメソッドと@Transactionalメソッドの中で、@Serviceクラスでいくつかの永続化操作を実行しています。@Asyncと@Transactionalは、すでに永続化されている永続オブジェクトを保持します。JPA
このメソッドでは、いくつかのオブジェクトを残しておき、同じトランザクション内にすでに保持されているこれらのオブジェクトに関連する新しいオブジェクトを保持します。彼はこの関連オブジェクトを永続化されていないと考えているので
JPAが例外をスローします。
a new object was found through a relationship that was not marked cascade PERSIST
これは私のサービスクラスの構造である:私はトランザクションと非同期メソッドに関連する何かがあると思い
@Service
public class AsyncOperationsServiceImpl implements AsyncOperationsService {
@Async
@Override
@Transactional
public void save(CampaignDTO campaignDTO) {
// saving related objects here throws an exception
}
}
、なぜなら、Asyncにアノテートされていないときには、同じコードが働いているからです。
私はまた、Transactionalアノテーションで伝播を試みましたが、機能していません。
私はここで何が欠けていますか?
ありがとうございます!
実際、Asyncを使わずに同じコードを実行するとOkですので、カスケードは必要ありません。また、このオブジェクトはすでに保持されています。 – jpadilladev