这些天来我遇到了一个问题,对于其他语言(例如php)来说这很简单,但是我正在做的项目是在Spring MVC中。 问题是:在 Spring MVC 中,我如何删除一个具有来自该实体的两个属性ID的实体?
示例:“ 从其中id1 =:id1和id2 =:id2 的实体删除”(这是我想要的查询)
感谢您的关注。
我正在尝试...
public boolean remover(int idUsuario, int idCategoria) {
EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT);
EntityManager manager = factory.createEntityManager();
String hqlStr = "delete from UsuarioEscolheCategoria where idUsuario = :idUsuario and idCategoria = :idCategoria";
Query query = null;
try {
query = manager.createQuery(hqlStr);
query.setParameter("idUsuario", idUsuario);
query.setParameter("idCategoria", idCategoria);
query.executeUpdate();
manager.close();
factory.close();
return true;
}catch(Exception e) {
return false;
}
}
如果我例外,它将给我:
答案 0 :(得分:0)
String hqlStr = "delete from UsuarioEscolheCategoria where usuario.idUsuario = :idUsuario and categoria.idCategoria = :idCategoria";
重要的部分是usuario.idUsuario
和categoria.idCategoria
。这样,您就可以引用模型类上的属性类型Usuario
。
答案 1 :(得分:0)
您的问题是会话工厂,请检查如何创建它,这里是一个简单的有用示例:
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
@Autowired
private SessionFactory sessionFactory;
protected Session getSession() {
return sessionFactory.getCurrentSession();
}
public void deleteById(Integer id) {
Query query = getSession().createSQLQuery("delete from TABLE where id = :t_id");
query.setInteger("t_id", id);
query.executeUpdate();
}