0

私は次の関係を持つ次のエンティティを持っています:

@Entity
@Table(name = "bpr_user")
public abstract class User {
  ...
  @OneToOne(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH,  CascadeType.REMOVE})
   @JoinColumn(name = "bcard_id", nullable = true)
   public BCard getBcard() {
     return bcard;
   }
}

このようにマージを実行すると、次のようになります。

    Adult adult = new Adult();
    BCard bcard = createBCard();
    adult.setBcard(bcard);
    adult = adultDao.merge(adult);

Bcardエンティティは永続化され、IDが与えられますが、saveOrUpdateを使用すると、BcardではなくAdultのみが永続化されます。なぜ??

    Adult adult = new Adult();
    BCard bcard = createBCard();
    adult.setBcard(bcard);
    adult = adultDao.saveOrUpdate(adult);
4

1 に答える 1

2

MERGEにはカスケードを構成しましたが、SAVE_UPDATEには構成しなかったためです。

Cascadeアノテーションを使用して、SAVE_UPDATEのカスケードを追加します。

于 2012-06-14T16:31:05.077 に答える