hibernate hql语句中的delete语句删除数据



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的 简写


Java code

?

1
2
if(number==1return 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);
}
2
Query query= session.createQuery("delete from KrSysRoleHavemodule k where k.krSysRole.pk=:pk");
query.executeUpdate();

/**
* 删除从表记录(不影响主表)
* @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