在 Hibernate 中,有没有办法创建并向 Criterion 对象添加别名。我有以下工作要做:
我从包含许多表的大型数据库中进行动态搜索。搜索有许多(25+)客户端选择的可选非排他参数。这需要使用 Hibernate Criteria API 来实现可管理性。在我的 DAO 中,我有以下方法:
Public List<myPojoClass> getDataByCriterion( List<Criterion> restrictionList) {
Session s = HibernateUtil.currentSession();
Criteria c = s.createCriteria(myPojo.class);
for (Criterion crit : restrictionList){
c.add(crit);
}
List<myPojoClass> response = c.list();
return response;
}
我需要与 myOtherPojo.class 进行连接,并想知道是否可以向上面的条件列表添加别名。
像这样的东西:
restrictionsList.add(... ...createAlias("myOtherPojo.class" , "mop");
然后,我需要向此类添加其他逻辑和,如上所述。
最佳答案
又是你! ;)
您可以传递条目集合(例如 HashMap
Public List<myPojoClass> getDataByCriterion( List<Criterion> restrictionList, HashMap<String,String> aliases) {
Session s = HibernateUtil.currentSession();
Criteria c = s.createCriteria(myPojo.class);
for (Criterion crit : restrictionList){
c.add(crit);
}
for (Entry<String, String> entry : aliases.entrySet()){
c.createAlias(entry.getKey(), entry.getValue());
}
List<myPojoClass> response = c.list();
return response;
}
如果您想更改获取模式,您可以执行类似的操作。当然,调用方法需要知道数据模型,以便正确设置别名,否则可能会在运行时出错。
关于java - hibernate :标准。向标准对象添加别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11528578/