1
は、私は次のように奇妙な問題を抱えています。私はそう@OnDelete(CASCADE)双方向マッピングに動作していない(休止状態)
@Data
@Entity
public class Device {
@OneToMany(mappedBy = "device")
private Collection<Container> containers = new ArrayList<>();
}
@Data
@Entity
public class Container {
@ManyToOne
@OnDelete(action = OnDeleteAction.CASCADE)
private Device device;
}
のような双方向のマッピングを定義する場合、コンテナ表の外部キー制約はON DELETE CASCADE
で作成されないため、デバイスを削除すると、そのコンテナは削除されません。
しかし私はそう
@Data
@Entity
public class Device {
}
@Data
@Entity
public class Container {
@ManyToOne
@OnDelete(action = OnDeleteAction.CASCADE)
private Device device;
}
ON DELETE CASCADE
セットで期待通りに制約が生成されますようにマッピング一方向を作る場合。
@Cascade(CascadeType.DELETE)
でデバイス側のカスケードを設定し、@OnDelete
を削除すると、カスケードは機能しますが、データベースに物理的な制約がなくても休止状態になります。
何か間違っていますか?私は@OnDelete
を片方向マッピングでのみ使うべきですか?これはバグですか?
よろしく デビッド
おかげで、:したがって、あなたはこのように他の側にOnDeleteを指定する必要があります!しかし、奇妙な行動。 – deekay