Java 在使用hibernate criteria API时,使用限制和排序方式会得到一个奇怪的结果
因此,我使用如下标准api编写了hibernate方法Java 在使用hibernate criteria API时,使用限制和排序方式会得到一个奇怪的结果,java,hibernate,hibernate-criteria,Java,Hibernate,Hibernate Criteria,因此,我使用如下标准api编写了hibernate方法 @Override public List<UBSIvrDetail> getIvrDetails(String caseNo, Date tradeDate) { Session session = sessionFactory.openSession(); List<UBSIvrDetail> dataList = null; try { Criteria cr = se
@Override
public List<UBSIvrDetail> getIvrDetails(String caseNo, Date tradeDate) {
Session session = sessionFactory.openSession();
List<UBSIvrDetail> dataList = null;
try {
Criteria cr = session.createCriteria(UBSIvrDetail.class);
cr.add(Restrictions.eq("caseNo", caseNo));
cr.add(Restrictions.eq("tradeDate", tradeDate));
cr.addOrder(Order.asc("caseNo"));
cr.addOrder(Order.asc("socSecNo"));
cr.addOrder(Order.asc("fundId"));
dataList = cr.list();
}
catch (Exception e) {
throw e;
}
finally {
session.close();
}
return dataList;
}
@覆盖
公共列表getIvrDetails(字符串caseNo,Date-tradeDate){
Session Session=sessionFactory.openSession();
List dataList=null;
试一试{
Criteria cr=session.createCriteria(UBSIvrDetail.class);
cr.add(限制条件eq(“案例号”,案例号));
cr.add(Restrictions.eq(“tradeDate”,tradeDate));
cr.addOrder(Order.asc(“案例号”));
cr.addOrder(Order.asc(“socSecNo”));
cr.addOrder(Order.asc(“fundId”);
dataList=cr.list();
}
捕获(例外e){
投掷e;
}
最后{
session.close();
}
返回数据列表;
}
当我使用showsql查看这个数据库的sql并将其放入数据库时,我看到了690个惟一的值,这一切都很好。但当我检查列表时,它返回同一行690次。我是不是遗漏了什么?完全不明白为什么会这样。
提前感谢您的帮助。Namaste那么你的意思是,当你将列表打印到终端或某处时,你会得到690次相同的数据,或者你正在检查它在做什么并看到相同的对象引用?@Makoto Yes此列表在控制台中打印时会返回690次相同的值(重复相同的值),这是不正确的。然而,如果我将相同的sql等效代码(通过打开ShowSQL属性获得)放入数据库并执行,它将返回690个不同的值