Никогда не запускайте запрос внутри цикла. Вместо этого вы можете получить все дочерние из всех родителей, выполнив следующие шаги.
Создать метод в Hibernate DAO и передать присоединиться свойство в функции ИЛИ вы можете отправить массив joinproperties Например:
public findAllRecord(Class persistentClass, String joinproperty) // For array (String[] joinproperty)
{
Criteria criteria = session.createCriteria(persistentClass); criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
criteria.setFetchMode(joinproperty, FetchMode.JOIN);
return criteria.list();
}
Вы можете добавить ограничение в выше critera как:
// Добавить ваше ограничение критерии здесь, и вы можете передать свойство в вышеупомянутой функции также, например:
criteria.add(Restrictions.eq(propertyName, name));
выше имя и ИмениСвойства вы можете пройти через динамически.
Теперь вызовите вышеуказанный метод, передав свойство join; Например:
class Parent{
private int id;
private String name;
private Child child;
}
class Child{
// Child property
}
Вызов метода будет .... как.
String joinproperty="child"; // Property of Parent class which you want to join
findAllRecord(Parent.class, String joinproperty)
Надеется, что это поможет вам ...
Я попробовал разные выборки, а также пытались сделать ленивую = ложь, но результаты были медленными – Enosh
я думаю, что вы можете оптимизировать его, да, но, по крайней мере для меня это немного сложно оценить, а также предложить альтернативу, если вы не публикуете какой-либо код ... Спасибо. – lrnzcig