我在我正在修改的系统中有两个表,data,data_modified。我最终需要的是一个看起来像这样的课程
compareClass{
field1 = data
field2 = data_modified where id=data.id
}
在data_modified表中为每个记录创建一个类。
我可以像这样的单个查询做类似的
select * from data2009.data s, data2009.data_modified m where m."original_data_id" = s."id"
但正如我所说,我希望它返回上面的类对象,而不是上面的查询生成的结果集。
有人可以指出我正确的方向来完成这个hibernate映射吗
答案 0 :(得分:0)
您可以使用hibernate中的Transformers从查询结果中创建自定义DTO。有关示例,请参阅here。
答案 1 :(得分:0)
编写并执行一个查询,该查询返回所有修改过的数据及其原始数据:
Query q = session.createQuery("select m from ModifiedData m"
+ " inner join fetch m.originalData");
List<ModifiedData> list = q.list();
然后迭代返回的列表,并为每个结果构建一个Comparison实例:
List<Comparison> result = new ArrayList<Comparison>(list.size());
for (ModifiedData m : list) {
result.add(new Comparison(m, m.getOriginalData()));
}
请注意,由于ModifiedData实例已经拥有其原始数据实例,因此Comparison类实际上并不实用。您可以直接返回ModifiedData列表。