2013-03-01 3 views
0

Я попытался создать собственный SQL-запрос и сопоставить класс сущности с параметром, но с ошибкой.Hibernate Native SQL Mapping to Entity с примером выбора

/** 
    * @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; 
    } 

Просьба привести пример. Благодарю.

ответ

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 
+0

Нет, это не работает должным образом. session.createSQLQuery ("выберите prm.rule_id как правило из pool_rule_mapping prm где prm.is_active =?;"); \t \t \t c = q.addEntity (PoolRuleMapping.class) .setParameter (0, 1) .list(); Он возвращает null; – peterwkc

+0

@peterwkc Вы неправильно указали параметр. Он начинается с 1, попробуйте 'setParameter (1, 1)'. –