-
Hibernate查询有关 in 的查询问题3
public List<Document> getDocumentsByIds(final String ids){ List<Document> documents=getHibernateTemplate().executeFind(new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException,SQLException { StringBuffer sql=new StringBuffer("from Document doc where doc.id in(?)"); Query query=session.createQuery(sql.toString()); query.setString(0,ids); return query.list(); } }); if(documents!=null&&documents.size()>0){ return documents; } return null; }
如上的代码,为什么我传递参数 "3,4,5",却只能查询出第一个3的对象,后面两个相应的对象为什么查询不出来,数据库都有记录存在的!
求解释
问题补充:visoin 写道List<String> ids= new ArrayList<String>(); ids.add()........
什么意思啊?2011年11月11日 12:47
3个答案 按时间排序 按投票排序
-
采纳的答案
你用的是HQL语句,不是SQL。
使用HQL的in语句时,传出的是集合或者数组。因此你需要使用以下方式:
List<Integer> ids = new ArrayList<Integer>();
ids.add(3);
ids.add(4);
ids.add(5);
Query query=session.createQuery(from document where id in (:ids));
query.setParameterList("ids", ids);
query.list();
如果你不想改动你的方法名,并且使用你的上述方法,那么你需要将
session.createQuery改成session.createSQLQuery。此时不能使用query.setString方法。你只能使用字符串拼接了。2011年11月14日 11:11
-
你的id是什么类型的,是number类型还是varchar类型的,如果是varchar类型的应该传的参数为"'3','4','5'"。
2011年11月14日 16:01
相关推荐
Hibernate Search将HQL与全文查询相结合,允许开发者使用HQL中已经熟悉的查询语法来进行全文搜索。这种转换使得从传统查询到全文搜索的过渡变得非常平滑,从而大大降低了学习曲线。 在高级搜索功能方面,Hibernate ...
《Hibernate Search in Action》这本书深入探讨了Hibernate Search这一强大的全文搜索引擎集成框架,它将全文搜索功能无缝地融入到Java持久层框架Hibernate之中。通过利用Lucene库的强大功能,Hibernate Search为...
1. **IN/NOT IN操作符**:`from Entity e where e.id in (select id from AnotherEntity)`,这样的查询会找出存在于另一个实体的结果。 2. **比较操作符**:`from Entity e where e.value > (select avg(value) ...
《Hibernate in Action》是一本经典的Java持久化框架Hibernate的实战指南。源码是作者为了配合书中的理论和示例而提供的实践素材,旨在帮助读者深入理解Hibernate的工作原理和使用方式。这里我们将围绕Hibernate的...
**Hibernate查询方法大全** Hibernate,作为Java领域中最流行的持久化框架之一,提供了多种查询数据的方法。这些方法使得开发者能够高效地从数据库中检索、更新和删除数据,无需编写大量SQL语句。本篇文章将深入...
当我们需要进行更复杂的数据库查询时,Hibernate提供了丰富的高级查询功能,这正是“Hibernate的高级查询”这一主题的核心所在。 在Hibernate中,高级查询主要包括HQL(Hibernate Query Language)、Criteria API和...
5. **多态查询的实现**:Hibernate支持使用`DetachedCriteria`或`Criteria` API来进行多态查询,通过`createCriteria()`方法指定父类,并使用`add(Restrictions.in("property", values))`等方法来限制查询条件。...
最后,为了防止数据的安全性问题,比如防止SQL注入,使用Hibernate的查询API可以有效避免这类风险,因为它们都是预编译的,可以自动转义特殊字符。 总结,使用Hibernate在查询条件中创建List集合是Java开发中常见的...
《Hibernate in Action》通过实例讲解了如何利用Hibernate来处理数据库操作,包括对象的持久化、查询、事务管理和性能优化等关键主题。 1. Hibernate核心概念:书中首先介绍了Hibernate的基本概念,如Session、...
Hibernate In Action 3 第三部分 中文 入门教程
《Hibernate In Action(Java.Persistence.with.Hibernate)》是一本深入探讨Hibernate框架的书籍,源码则是作者为了配合书中理论部分而提供的实践示例。Hibernate是一个流行的开源对象关系映射(ORM)框架,它允许...
《Hibernate Search in Action》是一本深入探讨Hibernate Search技术的专业书籍,配合源代码一同学习,能够帮助读者更好地理解和应用这项强大的全文检索和分析框架。Hibernate Search是Hibernate ORM的一个扩展,它...
除了基本功能外,本书还将涉及更高级的主题,如性能优化、第二级缓存的使用、HQL(Hibernate查询语言)和SQL的结合,以及Hibernate的事件监听机制。此外,还会介绍如何进行数据迁移,以及如何在测试环境中有效地使用...
**Hibernate教程21:深入理解Hibernate查询** 在Java开发中,Hibernate作为一个强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本教程将深入探讨Hibernate中的查询机制,包括HQL(Hibernate Query ...
7. **性能优化**:讲解如何针对特定场景优化Hibernate的使用,如延迟加载、批处理、连接池配置,以及避免N+1查询问题等。 8. **Hibernate与其他技术的整合**:介绍Hibernate如何与Spring框架、EJB、Web应用等进行...
14. **性能优化**:包括合理使用批处理、延迟加载、缓存、优化查询以及避免N+1查询问题等,都是提升Hibernate应用性能的关键。 15. **事务隔离级别**:理解数据库的四种事务隔离级别(读未提交、读已提交、可重复读...
在本文中,我们将探讨基于Hibernate的查询实践,包括HQL(Hibernate Query Language)和Criteria API的使用。我们将通过两个经典的练习题来深入理解这两个查询方式,并讨论它们在处理不同查询需求时的特点。 ### ...
本节我们将深入探讨Hibernate中的HQL(Hibernate Query Language)查询,这是一种专为Hibernate设计的面向对象的查询语言,类似于SQL但更贴近于Java程序员的思维。 首先,HQL查询的基本语法结构与SQL类似,但对象化...