Hibernate查询有关 in 的查询问题

问题描述

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 写道

解决方案

你用的是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方法。你只能使用字符串拼接了。
解决方案二:
你的id是什么类型的,是number类型还是varchar类型的,如果是varchar类型的应该传的参数为"'3','4','5'"。
解决方案三:
List<String> ids= new ArrayList<String>();ids.add()........

时间: 2024-07-29 15:38:39

Hibernate查询有关 in 的查询问题的相关文章

Hibernate对多表关联查询

由于公司项目的需要,我对Hibernate对多表关联查询研究了一下,现总结如下,供朋友参考. 一. Hibernate简介Hibernate是一个JDO工具.它的工作原理是通过文件(一般有两种:xml文件和properties文件)把值对象和数据库表之间建立起一个映射关系.这样,我们只需要通过操作这些值对象和Hibernate提供的一些基本类,就可以达到使用数据库的目的.例如,使用Hibernate的查询,可以直接返回包含某个值对象的列表(List),而不必向传统的JDBC访问方式一样把结果集的

hibernate的hql多个查询条件如何快捷的拼接

问题描述 hibernate的hql多个查询条件如何快捷的拼接 比如说有个检索,可能要检索A,B,C,D,E五个属性,那么在hql中拼接的语句就应该是 from table where A=? and b=? and C=? and D=? and E=?这样子,但是现实情况是比较复杂的,如果手动去拼接这个字符串比较复杂,什么时候加where就是个问题了,更何况有的属性查询有的不查询,求各位大神有什么现成的解决方案吗?或者我自己写代码的话是什么思路呢? 解决方案 你们回答的都不对,我找到解决办法

图片-String类型在Hibernate中Get()查询的时候 对象为null

问题描述 String类型在Hibernate中Get()查询的时候 对象为null 解决方案 1--1001对应的数据有没 2--这个表是否和这个Studen对应了映射关系 检查下 解决方案二: 是怎么执行的,要么你数据库没配置好,要么就是数据库没数据,再要么就是连接没获取到. 解决方案三: 弄好了 数据库里面的数据有空格

sql多表查询图形化界面查询返回结果与程序端hibernate查询结果不符。

问题描述 sql多表查询图形化界面查询返回结果与程序端hibernate查询结果不符. 我使用多表查询,其中一个表与令一个表字段名相同,在hibernate界面后一个与前一个字段名相同的字段输出结果也与前一个字段名相同.前问在不改字段名的情况下有什么办法解决?(以下d.name与p.name输出结果一样,显然d.name输出结果是错的) select p.id,p.name,p.post_coefficient,d.name ,postType,a.areaName,p.postHour,p.s

hibernate 多对多为空进行查询

问题描述 hibernate 多对多为空进行查询 各位好: @Entity @Table(name = "ROLES") public class Role implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) @ManyToMany(mappedBy = "roleSet", fetch = FetchType.EAGER, cascade = CascadeTy

在hibernate中命名查询,想要查询全部字段可以,但要查询某两个字段就不行了,能否解决呢。

问题描述 在hibernate中命名查询,想要查询全部字段可以,但要查询某两个字段就不行了,能否解决呢.<sql-queryname="select_5"><![CDATA[selectname,agefrompersonlimit3]]><returnalias="s"class="cn.itcast.bean.Person"/></sql-query>下面是构造函数packagecn.itcas

spring-我用hibernate自动生成的findById查询异常 麻烦大神看一下

问题描述 我用hibernate自动生成的findById查询异常 麻烦大神看一下 做的项目是hibernate和spring整合 解决方案 应该是getHibernateTemplate为空,看看配置

Hibernate的四种查询方式(主键查询,HQL查询,Criteria查询,本地sql查询)和修改和添加

Hibernate的添加,修改,查询(三种查询方式)的方法: 案例演示: 1:第一步,导包,老生常谈了都是,省略: 2:第二步,创建数据库和数据表,表结构如下所示: 3:第三步创建实体类User.java 1 package com.bie.po; 2 /** 3 * @author BieHongLi 4 * @version 创建时间:2017年3月8日 下午5:17:23 5 * 6 */ 7 public class User { 8 9 private int id; 10 priva

sql 视图与直接查询的效率那个快 视图第二次查询速度与第一次查询速度是否有差别 等等

问题描述 sql 视图与直接查询的效率那个快 视图第二次查询速度与第一次查询速度是否有差别 等等 先说一下问这个问题的原因 刚接触数据库不到一年 视图这里疑问多多 跪求大牛讲解 问题如下 1 . 在同等查询语句的情况下视图的查询速度快 还是 效率一样 2. 一个视图在同等查询条件下 第一次查询的速度与第二次查询的速度是否有区别 3.一个索引视图与一个普通视图在不做其他运算的情况下 即select * from 视图 这种情况 效率是否有区别 解决方案 视图的效率略微高一些,毕竟不需要sql解析编

ThinkPHP查询语句与关联查询用法实例_php实例

本文实例讲述了ThinkPHP查询语句与关联查询用法.分享给大家供大家参考.具体如下: 在thinkphp框架页面中我们可以直接拼写sql查询语句来实现数据库查询读写操作,下面就对此加以实例说明. 普通查询除了字符串查询条件外,数组和对象方式的查询条件是非常常用的,这些是基本查询所必须掌握的. 一.使用数组作为查询条件 复制代码 代码如下: $User = M("User"); //实例化User对象 $condition['name'] = 'thinkphp'; // 把查询条件传