私は一対多の関係を持っています:
@Entity
@Table(name = "Users")
public class User {
@Id
@Column(name = "user_id", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "login", nullable = false)
private String login;
@Column(name = "password", nullable = false)
private String password;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "role_id", nullable = false)
private Role role;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "user", cascade = javax.persistence.CascadeType.ALL)
private Set<Contacts> contacts = new HashSet<Contacts>();
User
そして、すべての連絡先でオブジェクトを削除しようとしています。私は使用しようとしました:
cascade = javax.persistence.CascadeType.ALL
cascade = javax.persistence.CascadeType.REMOVE
@Cascade(CascadeType.DELETE)
からorg.hibernate.annotations
@Cascade(CascadeType.DELETE_ORPHAN)
からorg.hibernate.annotations
しかし、何も役に立ちませんでした。私はいつも例外を受け取ります:
org.hibernate.util.JDBCExceptionReporter - 親行を削除または更新できません: 外部キー制約が失敗します (
contactmanager
.contact
, CONSTRAINTcontact_ibfk_1
FOREIGN KEY (user_id
) REFERENCES
ユーザーを削除するUPD コードは次のとおりです。
@Transactional
public void removeUser(User user) {
sessionFactory.getCurrentSession().delete(user);
}
どんな助けにも感謝します!ありがとう。