在ManyToMany关系

时间:2017-04-25 19:37:12

标签: java hibernate

我在一个非常基本的电子商务Java应用程序中有多对多的CATEGORY和PRODUCT之间的关系。

类别与产品有@ManyToMany关系。因此,有一个表CATEGORY_PRODUCT,其中包含两个列COLEGORY_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();
    }

计划是删除产品,但我有违反完整性约束"因为这种关系。

1 个答案:

答案 0 :(得分:0)

在调用session.delete(产品)之前,需要调用query.executeUpdate()。

您不需要query.setResultTransformer()调用。你应该摆脱那条线。 executeUpdate()的结果是一个int,表示删除了多少条记录。

几个月前你问过这件事,我刚才看到了。我认为你还没有等待答案,但也许这可以帮助下一个人。