Java 删除多个关系中的对象时违反完整性约束

Java 删除多个关系中的对象时违反完整性约束,java,hibernate,Java,Hibernate,在一个非常基本的电子商务java应用程序中,类别和产品之间存在多对多关系 类别与产品有@manytomy关系。因此,有一个表CATEGORY_PRODUCT,它有两个列CATEGORY_ID和PRODUCTS_ID 我想删除该表中某些产品的所有关系,是否正确 public void deleteProduct(long id){ Session session = HibernateUtil.getCurrentSession(); session.beginTransactio

在一个非常基本的电子商务java应用程序中,类别和产品之间存在多对多关系

类别与产品有@manytomy关系。因此,有一个表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();
    }

计划是删除产品,但由于关系,我有“完整性约束冲突”。

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

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


几个月前你问过这个问题,我现在才明白。我假设您还没有等待答案,但这可能会帮助下一个人。

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

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

几个月前你问过这个问题,我现在才明白。我想你还没有等答案,但也许这可以帮助下一个人