2013-03-01 72 views
0

我试图创建本机SQL查询并映射到带有参数的实体类,但失败。休眠本机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; 
    } 

请提供一个示例。谢谢。

回答

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(“select prm.rule_id as rule from pool_rule_mapping prm where prm.is_active =?;”); \t \t \t c = q.addEntity(PoolRuleMapping.class).setParameter(0,1).list();它返回null; – peterwkc 2013-03-21 07:02:36

+0

@peterwkc您将参数索引设置错误。它从1开始,尝试'setParameter(1,1)'。 – 2013-03-21 07:27:15