Hibernate criteria.list()返回重复项

时间:2016-04-03 14:39:21

标签: java hibernate

我知道这类问题已经被问了好几千次,但我想我有一个不同的问题。所以,我有一个A类,它有一个B类对象的集合和这个集合的getter:

public class A {
     private String Id;
     private ArrayList<B> bees;
     public ArrayList<B> getBees(){
        ArrayList<Criterion> criterions = new ArrayList<>();
        criterions.add(Restrictions.eq("classAId", this.Id));        
        return (ArrayList<B>)DatabaseHelper.getObjectByCriteria(criterions, B.class);
     }
}

和DatabaseHelper.getObjectByCriteria代码:

public static List getObjectByCriteria(ArrayList<Criterion> cr, Class classType){        
        List result = new ArrayList();        
        Session session = MyHibernateUtil.getSessionFactory().openSession();
        Criteria criteria = session.createCriteria(classType);        
        if (cr != null){
            for (Criterion criterion : cr){
            criteria.add(criterion);
            }        
        }
        result = criteria.list();
        if (session.isOpen()){
            session.close();
        }         
        return result;

    }

当我在MySQLWorkbench中运行此查询(select table from table_b where id = 123)时,我得到两个具有不同值的不同行。 但是,DatabaseHelper.getObjectByCriteria返回的“result”列表包含两个具有相同id和值的indentical对象。

我不使用任何类型的hibernate注释

我将show_sql属性设置为“true”,我检查了由hibernate运行的真实查询,并确定

0 个答案:

没有答案