我有一个复杂的查询,它从不同的表中获取数据然后需要转换为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;
}
答案 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())