標準の Jspresso アクションcloneEntityCollectionFrontAction
を使用すると、テーブルで選択した行を複製できます。複製は現在のモデルに限定され、コレクションが存在する場合は考慮されません (つまり、コレクションは自動的に複製されません)。
すべてのコレクションでエンティティを深く複製する方法は?
2番目の関連質問: コレクションの複製を実現するためのアクションを自分で書いてみました。私が書いたアクションの一部の下:
Offer newOffer = bc.getEntityFactory().createEntityInstance(Offer.class);
Offer clonedNewOffer = bc.cloneInUnitOfWork(newOffer);
clonedNewOffer.setCustomer(curOf.getCustomer());
clonedNewOffer.setEndApplicationDate(curOf.getEndApplicationDate());
clonedNewOffer.setName(curOf.getName());
clonedNewOffer.setStartApplicationDate(curOf.getStartApplicationDate());
モデルに新しいプロパティまたはコレクションを追加すると、メソッドを手動で更新する必要があるため、各プロパティに対してゲッターとセッターを呼び出しましたが、満足のいくものではありませんでした。
よりスマートで柔軟なメソッドを書く方法はありますか?
こんにちはヴィンセント、あなたの答えとあなたの最新の提案に関して、私はバックエンドを次のものに変更しました:
Offer newOffer = bc.getEntityFactory().createEntityInstance(Offer.class);
Offer clonedNewOffer = bc.cloneInUnitOfWork(newOffer);
CarbonEntityCloneFactory.carbonCopyComponent(curOf, clonedNewOffer, bc.getEntityFactory());
bc.registerForUpdate(clonedNewOffer);
しかし、エラーregisterForUpdate
により失敗しData constraints are not satisfied
ました。
clonedNewOffer の Id プロパティを確認しましたが、Id はすでに curOf Id プロパティと同じです。すべてのプロパティの厳密なコピーである「カーボン コピー」の意味を理解しているので、バックエンドから、
新しいエンティティを作成するためにエンティティを複製するにはどうすればよいですか?