我怎样才能只从DTO类获得addScalar的列?

时间:2018-09-14 05:55:16

标签: java hibernate projection

我对Hibernate中的addScalar有疑问。示例我有DTO类:

public class FieldInfoDTO {
    private String fieldInfo1;
    private String fieldInfo2;
    private String fieldInfo3;
    private String fieldInfo4;
    private String fieldInfo5;
}

然后在DAO课上,我这样做了:

String sql = "SELECT field_info1 AS fieldInfo1 FROM tbl_field_info;"
SQLQuery query = getSession().createSQLQuery(sbQuery.toString());
query.addScalar("fieldInfo1", StringType.INSTANCE);
query.setResultTransformer(Transformers.aliasToBean(FieldInfoDTO.class));
return query.list();

我希望结果在邮递员中会是这样:

{
   "fieldInfo1" : "value"
}

但它返回:

{
    "fieldInfo1" : "value",
    "fieldInfo2" : null,
    "fieldInfo3" : null,
    "fieldInfo4" : null,
    "fieldInfo5" : null
}

有什么办法只显示我的addScalar列?

1 个答案:

答案 0 :(得分:0)

我认为这里的问题归因于以下声明:

query.setResultTransformer(Transformers.aliasToBean(FieldInfoDTO.class));

它按照FieldInfoDTO类中的属性格式化结果(尽管其他字段设置为null

尝试将其删除,然后从String列表中获取结果。