2012-12-13 80 views
0

我有2個實體的Order和Item,它們相關爲1:N,Order是父表,Item是子表。當我刪除一個訂單時,我想要刪除相應的項目。但它沒有發生,而是將子表中的OrderId設置爲「null」。這將在Item表中的數據庫中創建孤行。JPA一對多關係子錶行沒有被刪除

這裏是我的配置:我使用Spring,Hibernate作爲JPAVendor和MySQL數據庫


@Entity 
@Table(name="T_ORDER") 
public class Order { 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private Long id; 

    private String customer; 

    @OneToMany(cascade=CascadeType.ALL) 
    @JoinColumn(name="ORDER_ID") 
    private Collection items = new LinkedHashSet(); 
} 

單項實體


@Entity 
public class Item { 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private Long id; 

    @ManyToOne 
    private Order order; 

    private String product; 

    private double price; 

    private int quantity; 

我只有2JPA屬性中設置


key="hibernate.show_sql"=true 
key="hibernate.hbm2ddl.auto" 

不能夠弄清楚還需要做些什麼來解決這個問題。

+0

@OneToMany(cascade = CascadeType.ALL,insertable = true,updatable = true) @JoinColumn(name =「ORDER_ID」)' –

回答

0

orphanRemoval = true可確保可是沒有孤兒子表...


@OneToMany(cascade=CascadeType.ALL, orphanRemoval=true) 
0

刪除JPA級聯 - javax.persistence.CascadeType,與Hibernate級聯代替它 - org.hibernate.annotations。級聯,與CascadeType.XXXXX

它看起來像JPA和Hibernate級聯註釋之間的不兼容問題。

JPA只支持

– Persist 
– Merge 
– Remove 
– Refresh 
– All 

JAPA目前不提供這些休眠 附加額外的級聯選項級聯選項

– save-update 
– delete 
– lock 
– evict 
– delete-orphan 
0

@OneToMany(級聯= CascadeType.ALL,插入= TRUE, updatable = true) @JoinColumn(name =「ORDER_ID」)