0
我正在寻找一种方法来在Spring中使用hibernate条件沿着其组合属性传递对象的Collection,java.util.map。如何使用休眠条件沿着组属性拉对象的结果集
示例域
MyDomain {
private String x;
private String y;
private String pos;
//---Getters & Setters ----
}
我喜欢具有
Map<String(X),Map<String(Y),List<MyDoamin>>
集合。为此,我使用分离标准。到目前为止,我能够组属性,但我不知道如何在结果集中添加整个对象,我可以使用结果转换器在Map中进行进一步转换。
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(MyDomain.class); detachedCriteria .setProjection( Projections.projectionList().add(Projections.groupProperty(X)) .add(Projections.groupProperty(Y)) ).addOrder(Order.asc(X)) .addOrder(Order.asc(Y)) Object o = this.getHibernateTemplate().findByCriteria(detachedCriteria);
编辑
目前我加载MYDOMAIN的整个列表中DAO类UND initlizing在看起来像服务类映射。
Map<String, Map<String,List<MyDomain>>> ret = new HashMap<String, Map<String, List<MyDomain>>>>(); try { List<MyDomain> myDomains = this.myDomainDao.findAll(); Collections.sort(myDomains); for (MyDomain myDomain : myDomains) { String x = myDomain.getX(); String y = myDomain.getY(); if (ret.get(x) == null) { ret.put(x, new HashMap<String,List<MyDomain>>()); } if (ret.get(x).get(y) == null) { ret.get(x).put(y, new ArrayList<MyDomain>()); } ret.get(x).get(y).add(myDomain); } } catch (Exception e) { this.logger.warn(e); this.logger.debug(e.getMessage()); } return ret;
我的努力是为了避免上面写码服务,并尝试做它在休眠。
在此先感谢。 Rehman
烨,你是对的。目前我做的和你在文章中提到的一样,但是我想也许这样的功能已经在休眠标准中可用了。 – Rehman 2011-12-15 12:47:34