0

こんにちは、Hibernate 実装で JPA2 を使用しています。次のような単純なマッピングを取得しました。

@Entity
@Table(name = "users")
public class User {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Integer id;

  @OneToMany(mappedBy = "user", cascade = ALL)
  private List<SubscribedUser> subscribedUsers;

}

および id class を持つ 2 番目のテーブル (SubscribeUser):

@Entity
@Table(name = "subscribed_users")
@IdClass(SubscribedUserId.class)
public class SubscribedUser {
  @Id
  @ManyToOne
  @JoinColumn(name = "id_user", referencedColumnName = "id")
  private User user;

  @Id
  @ManyToOne
  @JoinColumn(name = "id_subscribed_user", referencedColumnName = "id")
  private User subscribedUser;
}

2 つのレコードが subscribed_users テーブルであると仮定しましょう: 1.

user | subscribed_user
1    | 2

2.

user | subscribed_user
2    | 1

問題は、id = 1 のユーザーを削除すると、最初のレコードはカスケード オプションで正しく削除されますが、subsubscribed_users テーブルの 2 番目のエントリに id = 1 のユーザーへの参照がまだあるため、エラーが発生することです。 . 2番目のレコードもカスケード削除する可能性はありますか?

ありがとう

ダウィド

4

1 に答える 1

2

私が理解している限り、の間に双方向の関係がないと自動的にそれを行うことはできないSubscribedUserので、次のようなものを追加します。

@OneToMany(mappedBy = "subscribedUser", cascade = CascadeType.REMOVE)
private Set<SubscribedUser> dependentUsers;
于 2011-01-05T13:53:12.153 に答える