public class InvoiceModel
{
private Integer invoiceid;
private Date invoicedate;
private String invoicetype;
private BigDecimal invoicesum; ////这个在数据库表里面没有这个字段 所以hbm.xml也没有这个字段的配置
}
我现在想执行一个sql语句
public List<InvoiceModel> findAll(int startNum , int pageSize)
{
Session session = HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();

SQLQuery sqlquery = session.createSQLQuery("select a.*,invoicesum from DPC_invoice a left join ( select invoice_id ,sum( invoice_product_num*invoice_product_price) invoicesum from DPC_invoice_product group by invoice_id )b on a.invoice_id =b.invoice_id");
if( startNum > -1 )
{
sqlquery.setFirstResult(startNum).setMaxResults(pageSize);
}
List<InvoiceModel> list = sqlquery.addEntity(InvoiceModel.class).list();
return list;

}
这个sql语句里面,那个别名invoicesum 怎么样才能填充到InvoiceModel里面的private BigDecimal invoicesum;属性中去啊

解决方案 »

  1.   

    可以通过构造方法解决吧!
    首先在类中写一个有属性invoicesum的构造方法,然后sql语句可以像这样写  select new InvoiceModel
    (invoicesum )... from .......
      

  2.   

    乱讲      你那个是类名吧    应该是在xml中配啊   比如说 many-to-one   或者是 one-to-one 它只能通过那个类来点出来   而不能直接写   因为它是个类
      

  3.   

    不好意思   没写明白   是通过 invoicesum  来点出那个类中的属性   再查找
      

  4.   

    把invoicesum 写成,b.字段1 别名1,b.字段2 别名2