2017-04-25 65 views
1

在一個非常基本的電子商務Java應用中,我有CATEGORY和PRODUCT之間的多對多關係。在ManyToMany關係中刪除對象時的完整性約束違規

類別與產品有@ManyToMany的關係。因此,有一個表CATEGORY_PRODUCT與兩個colums CATEGORY_ID和PRODUCTS_ID

我想刪除該表中某個產品的所有關係,我做對了嗎?

public void deleteProduct(long id){ 
    Session session = HibernateUtil.getCurrentSession(); 
    session.beginTransaction(); 
    Product product = session.find(entityClass, id); 

     String sql = "DELETE FROM PUBLIC.CATEGORY_PRODUCT WHERE PRODUCTS_ID = " + id; 
     SQLQuery query = session.createSQLQuery(sql); 
     query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP); 

     session.delete(product); 
     session.getTransaction().commit(); 
    } 

該計劃是刪除產品,但我有「完整性約束違規」,因爲關係。

回答

0

在調用session.delete(product)之前,需要調用query.executeUpdate()。

您不需要query.setResultTransformer()調用。你應該擺脫那條線。 executeUpdate()的結果是一個int,表示有多少記錄被刪除。

你問了幾個月前,我剛纔看到它。我假設你還沒有等待答案,但也許這可以幫助下一個人。

相關問題