如何将自定义查询结果转换为JAVA POJO类

时间:2018-05-01 20:31:59

标签: hibernate

我有一个复杂的查询,它从不同的表中获取数据然后需要转换为JAVA POJO进行显示。 我已经尝试过使用变换器但是我得到的错误是“org.hibernate.PropertyNotFoundException:在com.db.loud.dto.lem.Feed类上找不到ID的setter”

如果我从id更改为ID(CAPS)我的POJO类它可以正常工作。但那不是如何命名java变量。

这里有什么问题,或者有更好的方法可以做到这一点。

来自DAO类的代码:

    Session session = getSession();
    String sql = "select a.id, a.name, b.id, b.f1, c.f2, c.f3 from table1 a, table2 b, table3 c where ......................................";

    SQLQuery query = session.createSQLQuery(sql);
    query.setString("id", id.toString());
    query.setResultTransformer(Transformers.aliasToBean(Feed.class));
    List<LemFeed> list = query.list();

这里Feed是我的JAVA POJO课程:

  public class LemFeed implements Serializable{
  private String id;
  private String name;
  private String f1;
  private String f2;
  private String f3;
  private String f4;
 }

2 个答案:

答案 0 :(得分:0)

使用JPA,您可以使用left join为映射的POJO字段指定显式列名(以及更多)。例如:

//View Model
public class SearchViewModel{
    public string Query {get;set;}
    public string Category {get;set;}
}

答案 1 :(得分:0)

使用AddScalar来解决该问题。

        List<KondorRecord> kondorRecords = session.createSQLQuery(sql)
            .addScalar("facilityId", new LongType())