我在一个非常基本的电子商务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();
}
计划是删除产品,但我有违反完整性约束"因为这种关系。
答案 0 :(得分:0)
在调用session.delete(产品)之前,需要调用query.executeUpdate()。
您不需要query.setResultTransformer()调用。你应该摆脱那条线。 executeUpdate()的结果是一个int,表示删除了多少条记录。
几个月前你问过这件事,我刚才看到了。我认为你还没有等待答案,但也许这可以帮助下一个人。