hibernate中Restrictions.in的问题

public List<E> query(Integer[] indexs) {
        ......
        ......
        ......
        
        List<E> beans = new ArrayList<E>();
        Criteria c = session.createCriteria( beanClass );
        if ( indexs.length > 1 ){
            c.add( Restrictions.in("indexs", indexs) );
            beans =  c.list();
        } else {
            c.add( Restrictions.eq("indexs", indexs[0]) );
            E bean = (E) c.uniqueResult();
            beans.add( bean );
        }
        
        return beans;
    }
    

上面的这段代码,原本写法如下

    public List<E> query(Integer[] indexs) {
            ......
            ......
            ......
            
            List<E> beans = new ArrayList<E>();
            Criteria c = session.createCriteria( beanClass );
            c.add( Restrictions.in("indexs", indexs) );
            beans =  c.list();    
            return beans;
        }

但是出现一个奇怪的问题:
当数组 indexs的元素只有一个时,beans 集合的元素有2个,而且是重复的,为了不让它重复,所以才对 indexs 的length进行判断.

检查了hibernate生成的sql语句,没有问题,而且sql执行结果只有一条记录,但是beans返回的集合对象确实有2个,而且是重复的,
我的问题是,为什么 indexs 会出现重复?
先谢了!

阅读 5.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进