2017-04-25 5 views
1

非常に基本的な電子商取引JavaアプリケーションでCATEGORYとPRODUCTの関係が多岐にわたります。ManyToMany関係でオブジェクトを削除すると、整合性制約違反が発生する

カテゴリは製品と@ManyToMany関係を持っています。したがって、2つの列CATEGORY_PRODUCTがあります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(製品)を呼び出す前に、query.executeUpdate()を呼び出す必要があります。

query.setResultTransformer()呼び出しは不要です。あなたはその行を取り除くべきです。 executeUpdate()の結果は、削除されたレコードの数を示すintです。

あなたはこれを数ヶ月前に尋ねましたが、今私はそれを見ています。私はあなたがまだ答えを待っていないと仮定しますが、多分これは次の人を助けることができます。

関連する問題