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

Hibernate 如何将自定义查询结果转换为JAVA POJO类,hibernate,Hibernate,我有一个复杂的查询,它从不同的表中获取数据,然后需要将其转换为JavaPOJO进行显示。 我已经尝试使用transformers来实现这一点,但我得到的错误是“org.hibernate.PropertyNotFoundException:在com.db.loud.dto.lem.Feed类上找不到ID的setter” 如果我从id改为id(CAPS),我的POJO类就可以正常工作了。但这不是java变量的命名方式 这里出了什么问题,或者有没有更好的方法 下面是DAO类的代码: Sess

我有一个复杂的查询,它从不同的表中获取数据,然后需要将其转换为JavaPOJO进行显示。 我已经尝试使用transformers来实现这一点,但我得到的错误是“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();

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

@Column(name="ID")
private String id;

使用AddScalar解决该问题

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

将字段名称更改为CAP后,会抛出错误“org.hibernate.hibernateeexception:无法实例化resultclass:com.db.loud.dto.lem.Feed”是否可以改用hibernate查询语言HQL?
        List<KondorRecord> kondorRecords = session.createSQLQuery(sql)
            .addScalar("facilityId", new LongType())