hibernate hql语句中的delete语句删除数据。 代码如下:
public class PlanManagerDAOImpl implements PlanManagerDAO{
public boolean deletePlanItem(Long itemId) {
Session s = HbnUtil.getSession();
Transaction tran = s.beginTransaction();
boolean flag=false;
try {
String hql=”delete from planItem where id=”+itemId;
int number=s.createQuery(hql).executeUpdate();
if(number==1) return flag=true;
tran.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
s.close();
}
return flag;
}
//测试代码:
public static void main(String[] args){
PlanManagerDAOImpl pmdi=new PlanManagerDAOImpl();
boolean al=pmdi.deletePlanItem(61L);
System.out.println(“al====”+al);
}
}
执行结果:Hibernate: delete from S_PLAN_ITEM where ID=61
al====true
“delete from planItem where id=”+itemId
楼主可以将hql语句换个格式试试:
“ delete from planItem where id= ? ”或
“ delete from planItem where id= :itemId ”,
然后用query的setParameter或者setLong给参数赋值试试。
有时字符串拼接会出问题……..
如果单单是 Hibernate 那么 这个你在查找看看。
PreparedStatement //这个我是直接插jdk api的
int executeUpdate()
(1) SQL 数据操作语言 (DML) 语句的行数 (2) 对于无返回内容的 SQL 语句,返回 0
if(number==1) {
return flag=true;//如果删除成功 你就返回了 下面怎么commit
}
tran.commit();
我不建议用 if的 简写
1
2
|
if (number== 1 ) return flag= true ; tran.commit(); |
public class PlanManagerDAOImpl implements PlanManagerDAO{
public boolean deletePlanItem(Long itemId) {
Session s = HbnUtil.getSession();
Transaction tran = s.beginTransaction();
boolean flag=false;
try {
String hql=”delete from planItem where id=”+itemId;
int number=s.createQuery(hql).executeUpdate();
tran.commit();
if(number==1){
return flag=true;
}
} catch (Exception e) {
e.printStackTrace();
}finally{
s.close();
}
return flag;
}
//测试代码:
public static void main(String[] args){
PlanManagerDAOImpl pmdi=new PlanManagerDAOImpl();
boolean al=pmdi.deletePlanItem(61L);
System.out.println(“al====”+al);
}
}
@Transactional
public boolean deletePlanItem(Long itemId) { Session s = HbnUtil.getSession(); Transaction tran = s.beginTransaction(); boolean flag=false; try { String hql=”delete from planItem where id=”+itemId; int number=s.createQuery(hql).executeUpdate(); tran.commit(); if(number==1){ return flag=true; } } catch (Exception e) { e.printStackTrace(); }finally{ s.close(); } return flag; } //测试代码: public static void main(String[] args){ PlanManagerDAOImpl pmdi=new PlanManagerDAOImpl(); boolean al=pmdi.deletePlanItem(61L); System.out.println(“al====”+al); } |
||
|
/**
* 删除从表记录(不影响主表)
* @param strings 存放从表记录的ID数组
*/
public void removeWzInfo(String[] strings) {
//删除用hql语句
String deleteHql = “delete from WzInfo w where w.wid = ?”;
SessionFactory factory = this.getHibernateTemplate().getSessionFactory();
Session session = factory.openSession();
int count = 0;
//循环删除
for (String strId : strings) {
Query querydelete = session.createQuery(deleteHql);
querydelete.setInteger(0, Integer.parseInt(strId));
count += querydelete.executeUpdate();
}
//统计影响的条数
System.out.println(count);
session.close();
}
http://bbs.csdn.net/topics/330236490
http://bbs.csdn.net/topics/330206881