我知道这类问题已经被问了好几千次,但我想我有一个不同的问题。所以,我有一个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运行的真实查询,并确定