0 0

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个答案 按时间排序 按投票排序

0 0

采纳的答案

你用的是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
0 0

你的id是什么类型的,是number类型还是varchar类型的,如果是varchar类型的应该传的参数为"'3','4','5'"。

2011年11月14日 16:01
0 0

List<String> ids= new ArrayList<String>();
ids.add()........

2011年11月11日 13:10

相关推荐

    Hibernate Search In Action

    Hibernate Search将HQL与全文查询相结合,允许开发者使用HQL中已经熟悉的查询语法来进行全文搜索。这种转换使得从传统查询到全文搜索的过渡变得非常平滑,从而大大降低了学习曲线。 在高级搜索功能方面,Hibernate ...

    hibernate Search in action

    《Hibernate Search in Action》这本书深入探讨了Hibernate Search这一强大的全文搜索引擎集成框架,它将全文搜索功能无缝地融入到Java持久层框架Hibernate之中。通过利用Lucene库的强大功能,Hibernate Search为...

    Hibernate 函数 ,子查询 和原生SQL查询

    1. **IN/NOT IN操作符**:`from Entity e where e.id in (select id from AnotherEntity)`,这样的查询会找出存在于另一个实体的结果。 2. **比较操作符**:`from Entity e where e.value &gt; (select avg(value) ...

    hibernate_in_action 源码

    《Hibernate in Action》是一本经典的Java持久化框架Hibernate的实战指南。源码是作者为了配合书中的理论和示例而提供的实践素材,旨在帮助读者深入理解Hibernate的工作原理和使用方式。这里我们将围绕Hibernate的...

    hibernate查询方法

    **Hibernate查询方法大全** Hibernate,作为Java领域中最流行的持久化框架之一,提供了多种查询数据的方法。这些方法使得开发者能够高效地从数据库中检索、更新和删除数据,无需编写大量SQL语句。本篇文章将深入...

    Hibernate的高级查询

    当我们需要进行更复杂的数据库查询时,Hibernate提供了丰富的高级查询功能,这正是“Hibernate的高级查询”这一主题的核心所在。 在Hibernate中,高级查询主要包括HQL(Hibernate Query Language)、Criteria API和...

    hibernate的多态查询

    5. **多态查询的实现**:Hibernate支持使用`DetachedCriteria`或`Criteria` API来进行多态查询,通过`createCriteria()`方法指定父类,并使用`add(Restrictions.in("property", values))`等方法来限制查询条件。...

    Hibernate在查询条件中创建List集合

    最后,为了防止数据的安全性问题,比如防止SQL注入,使用Hibernate的查询API可以有效避免这类风险,因为它们都是预编译的,可以自动转义特殊字符。 总结,使用Hibernate在查询条件中创建List集合是Java开发中常见的...

    Hibernate in action 中文版 完整版 pdf

    《Hibernate in Action》通过实例讲解了如何利用Hibernate来处理数据库操作,包括对象的持久化、查询、事务管理和性能优化等关键主题。 1. Hibernate核心概念:书中首先介绍了Hibernate的基本概念,如Session、...

    Hibernate In Action 3

    Hibernate In Action 3 第三部分 中文 入门教程

    Hibernate In Action(Java.Persistence.with.Hibernate)源码

    《Hibernate In Action(Java.Persistence.with.Hibernate)》是一本深入探讨Hibernate框架的书籍,源码则是作者为了配合书中理论部分而提供的实践示例。Hibernate是一个流行的开源对象关系映射(ORM)框架,它允许...

    Hibernate Search in action (pdf && code)

    《Hibernate Search in Action》是一本深入探讨Hibernate Search技术的专业书籍,配合源代码一同学习,能够帮助读者更好地理解和应用这项强大的全文检索和分析框架。Hibernate Search是Hibernate ORM的一个扩展,它...

    Hibernate In Action

    除了基本功能外,本书还将涉及更高级的主题,如性能优化、第二级缓存的使用、HQL(Hibernate查询语言)和SQL的结合,以及Hibernate的事件监听机制。此外,还会介绍如何进行数据迁移,以及如何在测试环境中有效地使用...

    Hibernate教程21_HIbernate查询

    **Hibernate教程21:深入理解Hibernate查询** 在Java开发中,Hibernate作为一个强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本教程将深入探讨Hibernate中的查询机制,包括HQL(Hibernate Query ...

    hibernate in action 中文版书籍

    7. **性能优化**:讲解如何针对特定场景优化Hibernate的使用,如延迟加载、批处理、连接池配置,以及避免N+1查询问题等。 8. **Hibernate与其他技术的整合**:介绍Hibernate如何与Spring框架、EJB、Web应用等进行...

    Hibernate In Action中文版电子书

    14. **性能优化**:包括合理使用批处理、延迟加载、缓存、优化查询以及避免N+1查询问题等,都是提升Hibernate应用性能的关键。 15. **事务隔离级别**:理解数据库的四种事务隔离级别(读未提交、读已提交、可重复读...

    Hibernate 查询经典练习题

    在本文中,我们将探讨基于Hibernate的查询实践,包括HQL(Hibernate Query Language)和Criteria API的使用。我们将通过两个经典的练习题来深入理解这两个查询方式,并讨论它们在处理不同查询需求时的特点。 ### ...

    hibernate查询详细代码讲解

    本节我们将深入探讨Hibernate中的HQL(Hibernate Query Language)查询,这是一种专为Hibernate设计的面向对象的查询语言,类似于SQL但更贴近于Java程序员的思维。 首先,HQL查询的基本语法结构与SQL类似,但对象化...

Global site tag (gtag.js) - Google Analytics