@Urukhayy

Как организовать такой мультитиповый метод?

public static void useLoadWithCriteria(Class<? extends AbstractHibernateClass> instance) {

        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();

        Session session = sessionFactory.openSession();

        Criteria criteria = session.createCriteria(instance.getClass());

        criteria.add(Restrictions.eq("age", 25));

        instance = (instance.getClass()) criteria.uniqueResult(); // Ошибка на строчку
    }


В последней строчке ошибка несоответствия классов.

uniqueResult возвращает Object.
Задача такова, чтобы передав instance любого класса, который наследуется от AbstractHibernateClass, выполнить для него выборку, и записать в этот instance результат выборки.
Также, возможно, кто-то предложит более оптимальный вариант метода с выборкой по любому классу.
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
@achist
Вы передаете в метод объект типа Class, не нужно у него вызывать getClass, сомневаюсь что он отдает вам то что вы ожидаете;
И внутри метода присваивать ссылке instance значения тут смысла не имеет.

попробуйте параметризованный метод:
public static <T extends AbstractHibernateClass> T useLoadWithCriteria(Class<T> instance) {
        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
        Session session = sessionFactory.openSession();
        Criteria criteria = session.createCriteria(instance);
        criteria.add(Restrictions.eq("age", 25));
        return = (T) criteria.uniqueResult();
}


Или как-то так
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
And3en
@And3en
Software Engineer at Luxoft
Попробуйте с помощью рефлексии.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы