2011-09-27 4 views
5

私は私のエンティティクラスHibernateの基準はTransformers.aliasToBean正しい値

を次のように私はすべてのプロパティすなわち100空のBOを取得しています
Criteria criteria = session.createCriteria(Report.class,"r"); 
    criteria 
    .createAlias("template", "t") 
    .createAlias("constituents", "rc") 
    .createAlias("rc.entity", "pe") 
    .createAlias("pe.model", "m") 
    .createAlias("pe.scenario", "s") 
    .setProjection(Projections.projectionList() 
      .add(Projections.property("r.Id"))   
      .add(Projections.property("t.Typ"))     
      .add(Projections.property("pe.bId"))    
      .add(Projections.property("m.model"))    
      .add(Projections.property("s.decay")) 
    ).setMaxResults(100) 
    .addOrder(Order.asc("r.Id")) 
    .setResultTransformer(Transformers.aliasToBean(BO.class)); 

が マイBOがNULLであるに参加してBOを作成しようとしていますが移入されていません

public class BO implements Serializable { 

private static final long serialVersionUID = 1L; 
private int Id; 
private String Typ; 
private String bId; 
private String model; 
private String decay; 

    Getters and Setters 

.....

私はラインaliasToBeanを削除して、オブジェクトを反復処理する場合は、[]私は正しい値がをフェッチ見ることができました次のように

答えて

14

は、Bean内のフィールド名と一致するProjectionListアイテムをエイリアシング明示的に試してみてください...私を導いてください:

Criteria criteria = session.createCriteria(Report.class,"r"); 
criteria 
.createAlias("template", "t") 
.createAlias("constituents", "rc") 
.createAlias("rc.entity", "pe") 
.createAlias("pe.model", "m") 
.createAlias("pe.scenario", "s") 
.setProjection(Projections.projectionList() 
     .add(Projections.property("r.Id"), "Id")   
     .add(Projections.property("t.Typ"), "Typ")     
     .add(Projections.property("pe.bId"), "bId")    
     .add(Projections.property("m.model"), "model")    
     .add(Projections.property("s.decay"), "decay") 
).setMaxResults(100) 
.addOrder(Order.asc("r.Id")) 
.setResultTransformer(Transformers.aliasToBean(BO.class));