2014-03-27 29 views
0

我要让不同的查询休眠 这里是我的DaoImpl鲜明的错误java.lang.Integer中不能被强制转换为模拟

@SuppressWarnings("unchecked") 
    public List<ModelNilai> getListNilaiAwal(Integer page, Integer id, Integer idm) { 
     // TODO Auto-generated method stub 
     List<ModelNilai> list = new ArrayList<ModelNilai>(); 
     Disjunction dis = Restrictions.disjunction(); 

     dis.add(Restrictions.eq("mahasiswa.id", id)); 


     Criteria c = getCurrentSession().createCriteria(ModelNilai.class); 

     c.createAlias("makul","m"); 

     c.setProjection(Projections.property("id")); 
     c.setProjection(Projections.distinct(Projections.property("m.id"))); 
     c.add(dis); 

     if(page!=null){ 
      c.setFirstResult((page-1)*LISTSIZE); 
     } 

     /*Mengurutkan data yang dipilih berdasar id secara Descending*/ 
     c.addOrder(Order.desc("id")); 

     /*Menentukan jumlah baris data dari tabel yang di pilih*/ 
     c.setMaxResults(LISTSIZE); 

     list.addAll(c.list()); 

     if(page==null){ 
      setTotalPage(c); 
     } 
     return list; 
    } 

这里我ModelNilai

@ManyToOne 
    @JoinColumn(name="id_makul") 
    private ModelMakul makul; 

ModelMakul

@OneToMany(mappedBy="makul",cascade=CascadeType.ALL) 
     @JsonIgnore 
     private Set<ModelNilai> nilai; 

当我运行,,, 它使这个查询

Hibernate: select distinct m1_.id_makul as y0_ from tbl_nilai this_ inner join tbl_makul m1_ on this_.id_makul=m1_.id_makul where (this_.id_mhs=?) order by this_.id_nilai desc limit ? 
Hibernate: select count(*) as y0_ from tbl_nilai this_ inner join tbl_makul m1_ on this_.id_makul=m1_.id_makul where (this_.id_mhs=?) order by this_.id_nilai desc limit ? 

和错误发生 java.lang.ClassCastException:java.lang.Integer中不能转换到id.ac.undip.mlearning.model.ModelNilai

我走到哪里错了?我认为查询是正确的,但为什么它总是给我那个错误? 请帮忙,,

回答

0
c.setProjection(Projections.distinct(Projections.property("m.id"))); 

告诉Hibernate返回的ID,这将是List<Integer>的列表。您正尝试将结果添加到List<ModelNilai>

+0

谢谢,,,我知道现在有什么错, 你能告诉我怎么做不同的投影吗? – Resi

相关问题