该回答引用ChatGPT
首先,您可以使用HQL或者SQL语句来查询两个表的数据,然后使用setResultTransformer方法将查询结果转换为POJO。
关于第一个问题,您可以通过创建一个包含多个字段的类(例如ResultClass)来存储查询结果,然后再将ResultClass转换为POJO。
例如:
public class ResultClass {
private Long id;
private String field1;
private String field2;
...
// Getters and setters
}
Query query = session.createSQLQuery("SELECT A.id as id, A.field1 as field1, B.field2 as field2 FROM A, B WHERE A.id = B.id");
query.setResultTransformer(Transformers.aliasToBean(ResultClass.class));
List<ResultClass> results = query.list();
for (ResultClass result : results) {
SM_Power smPower = new SM_Power();
smPower.setId(result.getId());
smPower.setField1(result.getField1());
...
// Convert ResultClass to SM_Power POJO
}
关于第二个问题,您可以在创建查询语句之前使用addScalar方法来指定每一个字段的数据类型,以避免类型错误。
例如:
Query query = session.createSQLQuery("SELECT A.id as id, A.field1 as field1, B.field2 as field2 FROM A, B WHERE A.id = B.id");
query.addScalar("id", Hibernate.LONG);
query.addScalar("field1", Hibernate.STRING);
query.addScalar("field2", Hibernate.STRING);
query.setResultTransformer(Transformers.aliasToBean(SM_Power.class));
List<SM_Power> results = query.list();