Я ищу способ доставки Collection, java.util.map, объектов по свойствам их групп с использованием критериев гибернации в Spring.
Пример домена
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);
EDIT
В настоящее время я загружаю весь список MyDomain в классе Dao и инициализирую карту в классе обслуживания, которая выглядит следующим образом.
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