2007-10-26

批量删除

关键字: 批量删除
/**
	 * <p>
	 * 批量删除用户
	 * </p>
	 * 
	 * @param hql,如: delete Employee e where e.uid in (1,2,3) 
	 * @return 删除的数量
	 */
	public int delEmps(String hql) {
		Session ses = null;
		Transaction tran = null;
		int count = 0;
		try {
			ses = SessionFactory.getSession();
			tran = ses.beginTransaction();
			Query query = ses.createQuery(hql);
			count = query.executeUpdate();
			tran.commit();
		} catch (SessionFactoryException e) {

			e.printStackTrace();
			try {
				SessionFactory.rollBackTransaction(tran);
			} catch (SessionFactoryException e1) {
				e1.printStackTrace();

			}
		} finally {
			try {
				SessionFactory.closeSession(ses);
			} catch (SessionFactoryException e) {
				e.printStackTrace();

			}
		}
		return count;
	}
评论
weiweichen1985 2008-04-22
上面这种批量删除是没有级联的情况。。。
一旦有级联,就会出现错误,即使在one方的配置文件中设置了cascade="all-delete-orphan"...
解决方案:加载实体后再进行删除,不过就是效率有点低。。。
boolean flag = false;
		Session session = null;
		Transaction tran = null;
		try {
			session = this.getSession();
			tran = session.beginTransaction();
			for (int i = 0; i < arr.length; i++) {
				MMessageList mm = (MMessageList) session.get(
						MMessageList.class, new Integer(arr[i]));
				session.delete(mm);
			}
			tran.commit();
			flag = true;
		} catch (Exception e) {
			e.printStackTrace();
			if (tran != null)
				tran.rollback();
			return flag;
		}
		return flag;
发表评论

您还没有登录,请登录后发表评论

weiweichen1985
搜索本博客
我的相册
E6c390da-d0cb-3350-97d4-83ec6586912c-thumb
2008-6-26
共 122 张
存档
最新评论