2012-06-11 4 views
1

У меня есть две таблицы, установленные в качестве Parent/Child, например, компании и продукции следующим образом -Hibernate - Детские записи не удаляются

компании Таблица: -

company_id, Company_Name, CREATION_DATE

101 , IBM, 12-May-2010

Таблица продукта: -

company_id, pRODUCT_ID, PRODUCT_NAME

101, 1001, Eclipse

101, 1002, DB2

Сохранение нового родителя ребенка (компании и продукта) не является проблемой. Проблема возникает, когда пользователь удаляет продукт из объекта компании.

Я следующую информацию отображения продукта в Company.java

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
@JoinColumn(name = "COMPANY_ID",nullable=false) 
@OrderBy(clause = "PRODUCT_NAME") 
@ForeignKey(name = "fk_company_product")  
private List<Product> products = new ArrayList<Product>(); 

Через этого отображения, информация о продукте обновляется должным образом, но если я удалить продукт из фасоли компании и сохранить компанию, то информация о продукте не является удалены из таблицы продуктов.

Благодарим за помощь.

ответ

4

Каскадное удаление работает только в том случае, если вы удалите родителя. Для обработки удаления с помощью аннотаций, вы должны использовать:

  1. Если вы используете JPA 2.0:

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval=true) 
    
  2. Если вы используете JPA 1.0 вы можете использовать спящий режим аннотацию:

    @OneToMany(CascadeType.DELETE_ORPHAN) 
    
+0

Я хочу сделать это через сопоставление аннотаций –

+0

@PramodKumar проверить обновленный ответ, пожалуйста! – tibtof

+0

, поэтому, если я удалю продукт из списка продуктов и сохраню компанию, то продукт мы удалим из таблицы продуктов прямо? –

Смежные вопросы