`
hbcui1984
  • 浏览: 149841 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hql语句中可以实现批量删除或者查询的功能吗

阅读更多
在查询时,传入一个id的数组,然后提取这些id的对象,利用Hql语句可以实现吗?
我今天实验了一下,发现总不太对

	    String[] ids = {"4aec7b4a0e96cf8c010e96f35edd000b","4aec7b4a0e96cf8c010e96f5353b000e"};
	    
            String str="";
	    for(int i=0;i<ids.length;i++){
			str+="'"+ids[i]+"'";
			if(i!=(ids.length-1))
			    str+=",";
	    	}

	    List list;
	    try {
    		list = appinfoManager.find("from Appinfo where id in (?)",str);
    		System.out.println("共有"+list.size()+"条记录");
	    } catch (DaoException e) {
			e.printStackTrace();
	    }


查询结果为0条记录,但是数据库中确实存在这些记录。
其实这些在sql中应该可以实现的,不知道在hql语句中为什么不行
分享到:
评论
3 楼 hbcui1984 2007-01-16  
谢谢楼上两位正解,我试了一下,两位的方法都不错
我把这个问题稍微总结了一下,有兴趣的可以参看:
http://blog.csdn.net/hbcui1984/archive/2006/12/05/1431011.aspx
2 楼 codeutil 2007-01-15  

String  ids[]=new  String[]{"1","2","3"};  
 
String  hql=  "  from Appinfo where id  in  (?)";  
 
 Query  query  =  session.createQuery(hql);  
query  .setParameterList(ids);  

see:

 Query  setParameters(Object[]  objectArray,  Type[]  typeArray)  throws  HibernateException;  
   Query  setParameterList(String  string,  Collection  collection,  Type  type)  throws  HibernateException;  
   Query  setParameterList(String  string,  Collection  collection)  throws  HibernateException;  
   Query  setParameterList(String  string,  Object[]  objectArray,  Type  type)  throws  HibernateException;  
   Query  setParameterList(String  string,  Object[]  objectArray)  throws  HibernateException;  

1 楼 yiqing1982 2007-01-15  
hbcui1984 写道
在查询时,传入一个id的数组,然后提取这些id的对象,利用Hql语句可以实现吗?
我今天实验了一下,发现总不太对

	    String[] ids = {"4aec7b4a0e96cf8c010e96f35edd000b","4aec7b4a0e96cf8c010e96f5353b000e"};
	    
            String str="";
	    for(int i=0;i<ids.length;i++){
			str+="'"+ids[i]+"'";
			if(i!=(ids.length-1))
			    str+=",";
	    	}

	    List list;
	    try {
    		list = appinfoManager.find("from Appinfo where id in (?)",str);
    		System.out.println("共有"+list.size()+"条记录");
	    } catch (DaoException e) {
			e.printStackTrace();
	    }


查询结果为0条记录,但是数据库中确实存在这些记录。
其实这些在sql中应该可以实现的,不知道在hql语句中为什么不行


	    String[] ids = {"4aec7b4a0e96cf8c010e96f35edd000b","4aec7b4a0e96cf8c010e96f5353b000e"};
	    
            String str="";
	    for(int i=0;i<ids.length;i++){
			str+="'"+ids[i]+"'";
			if(i!=(ids.length-1))
			    str+=",";
	    	}

	    List list;
	    try {
    		list = appinfoManager.find("from Appinfo where id in ("+str+")");
    		System.out.println("共有"+list.size()+"条记录");
	    } catch (DaoException e) {
			e.printStackTrace();
	    }

这样估计就可以了,你试下呢

相关推荐

    hql批量删除

    以给定的文件为例,批量删除特定名字为"Tom"的Customer对象的HQL语句是"delete from CUSTOMERS where NAME='Tom'"。在Java代码中,首先需要通过SessionFactory的openSession()方法获取一个Session实例,然后开始一个...

    HQL批量插入、更新和删除

    - **批量删除**:对于批量删除操作,可以使用HQL的`DELETE`语句。例如,要删除所有状态为“无效”的用户记录,可以执行如下HQL语句: ```java String hql = "DELETE User WHERE status = :status"; Query query =...

    Hibernate HQL查询语句总结.docx

    * 使用 HQL 语句可以批量更新和删除数据,提高了性能。 * 例如:update User user set user.age=20 where user.age=18; * 例如:delete from User user where user.age=18; 使用 HQL 语句可以简化实体的更新和删除...

    HQL语句详解Select/update/deletefromwhere...

    需要注意的是,在Hibernate中查询时,如果实体之间存在继承关系(如`Employee`类继承自`HourlyEmployee`和`SalariedEmployee`),则可以通过类似`"from Employee"`这样的HQL语句来查询基类`Employee`的所有子类实例...

    Hql语句注意事项总结

    一种方法是动态构建Hql语句,将数组元素拼接成一个逗号分隔的字符串,然后在`in`子句中使用这个字符串。例如,`id in ('1','2','3')`。另一种方法是使用Hibernate的参数绑定功能,直接将数组作为参数传递,Hibernate...

    hibernateTemplate批量删除数据

    这里的`"ids"`是对应于HQL语句中的参数占位符,确保其与HQL语句中的占位符名称一致,才能正确执行参数绑定。此外,传递给`setParameterList()`的参数必须是一个`List`或数组,其中的元素类型应与HQL语句中声明的类型...

    hibernate hql语句

    批量更新或删除是Hibernate 3中的一项重要特性,它可以显著提高处理大量数据时的性能。使用HQL进行批量操作时需要注意: - **性能影响**:虽然批量操作能提高效率,但在某些情况下可能会导致索引或约束的失效,需要...

    HQL查询pdf资料

    在HQL中,可以使用`UPDATE`和`DELETE`语句来批量修改或删除实体。例如,要将所有年龄为18岁的用户年龄更新为20岁,可以使用以下HQL: ```java String hql = "UPDATE User user SET user.age = 20 WHERE user.age = ...

    SSH 全选反选批量删除

    在批量删除时,可以通过HQL(Hibernate Query Language)或者Criteria API来执行SQL删除语句。例如,你可以创建一个Criteria查询,设置条件为选中的所有记录,然后调用delete()方法进行删除。 Struts2作为前端控制...

    ssh整合的分页、批量删除

    下面将详细介绍SSH整合在分页和批量删除功能上的实现。 一、SSH整合中的分页 在大型系统中,为了提高用户体验和性能,通常需要对数据进行分页显示。在SSH框架中,分页主要由Struts和Hibernate协同完成。 1. **...

    HQL 语法总结 实体查询

    例如,如果我们只想获取用户的名字和年龄,可以使用如下HQL语句: ```java List[]&gt; list = session.createQuery("select user.name, user.age from TUser as user").list(); ``` 此外,我们还可以利用 HQL 动态...

    MySql+SSH的分页及批量删除示例

    在SSH框架中,可以先收集需要删除的ID,然后通过Hibernate的Session.delete()方法或HQL的DELETE语句来执行批量删除。批量删除需要注意事务控制,确保操作的原子性和一致性,避免因个别删除失败而导致其他记录的错误...

    HQL简易介绍(DOC文档)

    在Hibernate3中,HQL引入了更新和删除操作,使得可以直接对数据库进行批量操作,提高效率。例如: - 更新操作: ```java Transaction trans = session.beginTransaction(); String hql = "update User user set user...

    hibernate批量删除.txt

    5. **结合使用**:实际应用中可以根据具体情况选择合适的批量删除策略,或者将多种策略结合起来使用,以达到最佳的性能效果。 #### 四、总结 通过上述介绍,我们可以了解到使用Hibernate进行批量删除操作不仅可以...

    jsp Hibernate批量更新和批量删除处理代码.docx

    本文件主要探讨了如何使用Hibernate进行批量更新和批量删除处理,这些操作在处理大量数据时尤其重要,因为它们可以显著提高应用的性能。下面我们将深入解析这两个主题。 批量更新在Hibernate中通常涉及在一个事务中...

    Java的Hibernate框架中用于操作数据库的HQL语句讲解

    5. **批量更新和删除**:在Hibernate 3及以上版本,可以直接执行HQL更新和删除语句,如 `update User set name='123123' where name='sun33'` 和 `delete User where name='123123'`,无需先加载对象。 6. **分组与...

    JPA加载_更新_删除对象及使用JPQL语句进行查询

    同样,也可以使用JPQL的`DELETE`语句进行批量删除。 现在,我们转向JPQL,它是JPA提供的面向对象的查询语言,类似于SQL,但更加抽象和面向对象。JPQL可以用来查询、更新和删除数据。例如,以下是一个简单的JPQL查询...

    基础操作1

    批量删除的实现方式稍有不同,因为Hibernate本身没有提供直接的批量删除接口。但可以通过以下两种途径来实现: 1. **Hibernate自带方式**:使用`Session.delete()`方法配合Criteria或者HQL查询来实现。虽然这并不算...

    Hibernate优化方案

    例如,要删除所有User对象,只需执行HQL语句`delete User`,然后调用`Query.executeUpdate()`方法。这种方式与直接使用JDBC在性能上接近,推荐使用。若必须采用取出后再修改的方式,应注意避免内存溢出,可参考批量...

    Hibernate相关资料

    总结,HQL是Hibernate的核心组成部分,它提供了丰富的查询、更新和删除功能,使得数据库操作更加便捷。开发者应熟练掌握HQL,以充分利用Hibernate的优势,提高开发效率,降低维护成本。在实际项目中,结合Criteria...

Global site tag (gtag.js) - Google Analytics