代码如下:
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
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
楼主可以将hql语句换个格式试试:
" delete from planItem where id= ? "或
" delete from planItem where id= :itemId ",
然后用query的setParameter或者setLong给参数赋值试试。
有时字符串拼接会出问题........
int executeUpdate()
(1) SQL 数据操作语言 (DML) 语句的行数 (2) 对于无返回内容的 SQL 语句,返回 0 if(number==1) {
return flag=true;//如果删除成功 你就返回了 下面怎么commit
}
tran.commit();我不建议用 if的 简写
if(number==1) return flag=true;
tran.commit();看看 你的语句 会不会出问题
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);
}
}你把return 放到了提交事务的前面 会更新就见鬼了
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);
}