Hibernate Native SQL Mapping to Entity с примером выбора

Я попытался создать собственный SQL-запрос и сопоставить его с классом сущности с параметром, но потерпел неудачу.

/**
     * @return
     */
    public List<PoolRuleMapping> getAllPRM() {
        Session session = null;
        List<PoolRuleMapping> prmList = null;

        try {
            session = HibernateSessionFactory.getSession();

            Query q = session.createSQLQuery("select * from pool_rule_mapping").addEntity(PoolRuleMapping.class);
            prmList = q.list();

        } catch (HibernateException e) {
        } finally {
            session.close();
        }

        return prmList;
    }

Приведите пример. Спасибо.


person nicholas    schedule 01.03.2013    source источник


Ответы (1)


Вы можете попробовать приведенный ниже код.

session.createSQLQuery("select * from pool_rule_mapping")
 .addScalar("ID", Hibernate.LONG)
 .addScalar("NAME", Hibernate.STRING)
 .addScalar("SOMEDATE", Hibernate.DATE)
 .addEntity(PoolRuleMapping.class);

Кроме того, вы можете попробовать указать псевдонимы для отдельных полей.

select prm.id AS ID, prm.name AS NAME, prm.somedate as SOMEDATE from pool_rule_mapping prm
person Nayan Wadekar    schedule 01.03.2013
comment
Нет, это не работает так, как ожидалось. session.createSQLQuery (выберите prm.rule_id как правило из prm pool_rule_mapping prm, где prm.is_active = ?;); c = q.addEntity(PoolRuleMapping.class).setParameter(0, 1).list(); Он возвращает ноль; - person nicholas; 21.03.2013
comment
@peterwkc Вы неправильно устанавливаете индекс параметра. Он начинается с 1, попробуйте setParameter(1, 1). - person Nayan Wadekar; 21.03.2013