【问题标题】:Hibernate Criteria Transformers.aliasToBean is not populating correct valuesHibernate Criteria Transformers.aliasToBean 没有填充正确的值
【发布时间】:2011-11-26 08:02:52
【问题描述】:

我正在尝试通过加入我的实体类来创建 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));

我得到 100 个空 BO,即所有属性都为空 我的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 并迭代 Object[] 时,我可以看到获取的正确值 请指导我...

【问题讨论】:

    标签: hibernate hibernate-criteria


    【解决方案1】:

    尝试显式地为 ProjectionList 项设置别名以匹配 bean 中的字段名称,如下所示:

    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));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-13
      • 2023-03-11
      • 1970-01-01
      • 2015-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多