2009-07-23 5 views
0
@Entity 
public class Parent { 
    @Id 
    @GeneratedValue(strategy=GenerationType.TABLE) 
    int id; 

    @OneToMany(cascade=CascadeType.REMOVE) 
    List<Item> children = new ArrayList<Child>(); 
} 

@Entity 
public class Child { 
    @Id 
    @GeneratedValue(strategy=GenerationType.TABLE) 
    int id; 
} 

Как вы можете видеть выше, у меня есть OneToMany-Relation между родителем и дочерним элементом. Если я удалю экземпляр родителя, все дети также будут удалены. Есть ли способ заставить это работать и наоборот?JPA: Обратное каскадное удаление

Этот код работает без исключений, но когда я загружу p в следующий раз, появится новый ребенок.

ответ

2

Если вы хотите удаляет работать с обеих сторон, вы должны определить двунаправленную связь между Parent и Child:

// in Parent 
@OneToMany(cascade=CascadeType.REMOVE, mappedBy="parent") 
List<Item> children = new ArrayList<Child>(); 

// in Child 
@ManyToOne 
Parent parent; 
Смежные вопросы