Передача значений в универсальный метод динамически - PullRequest
0 голосов
/ 23 мая 2019

Я использую Hibernate, и у меня есть много методов этого типа:

 public static void modifySchemeEvents(String schmCode, String username) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            Criteria cr = session.createCriteria(SchmEventsTable.class);
            cr.add(Restrictions.eq("schmCode", schmCode));
            SchmEventsTable evt = (SchmEventsTable) cr.uniqueResult();
            evt.setLchgUserId(username);
            tx.commit();
        } catch (HibernateException asd) {
            log.debug(asd.getMessage());
            if (tx != null) {
                tx.rollback();
            }
        } finally {
            session.close();
        }
    }

Это обновило базу данных с именем пользователя, где schmCode равно <schmCode> Я пытаюсь преобразовать в универсальный, чтобы я неЯ должен написать отдельный метод для всех обновлений, поэтому я пришел к этому универсальному методу:

public static <T> T getUpdateObject(Class c, Map<String, ?> params) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction tx = null;
        T value = null;
        try {
            tx = session.beginTransaction();
            Criteria cr = session.createCriteria(c);
            for (Map.Entry<String, ?> entry : params.entrySet()) {
                cr.add(Restrictions.eq(entry.getKey(), entry.getValue()));
            }
            value = (T) cr.uniqueResult();
////How to set the values here?***
            tx.commit();
        } catch (HibernateException asd) {
            log.debug(asd.getMessage());
            if (tx != null) {
                tx.commit();
            }
        } finally {
            session.close();
        }
        return value;
    }

Я пытаюсь использовать его следующим образом:

Map<String, String> schemeEventMap = new HashMap();
schemeEventMap.put("schmCode", "CA201");
SchmEventsTable evt = DataOperation.getUpdateObject(SchmEventsTable.class, schemeEventMap);
evt.setLchgUserId(username);

Это не обновляеттаблица как первый метод.Мне интересно, как передать параметры в общем методе динамически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...