1

我的查询是:

            List<EmpModel> EmpData = sess2.createCriteria(EmpModel.class)
          .setFetchMode("TestModel", FetchMode.JOIN)  
          .add(Property.forName("id").in(emp_ids)).list();

现在,触发的查询是完全正确的。它返回 test 和 emp 表的一对一连接。但是,返回的打印语句只给了我 EmpModel 表中的值。我相信这样做的原因是上面提到的 emp_ids 总是出现为零,因此测试表中的每个值都是空的。有人能告诉我如何克服这个错误吗?

4

1 回答 1

0

如果您希望条件也返回TestModel实例,您可以添加另一个条件和结果转换器。你没有发布你的实体,所以如果例如EmpModel有一个属性 testModel

List<<HashMap<String, Object>> EmpData = sess2.createCriteria(EmpModel.class)
  .add(Property.forName("id").in(emp_ids))
  .createAlias("testModel", "tm")
  .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)
  .list();

请注意,返回类型从 更改List<EmpModel>List<<HashMap<String, Object>>,因为现在查询将返回一个HashMaps 列表。每个 HashMap 都有一个"this"指向 a 的入口EmpModel,以及一个指向对应的"tm"入口(我们在构建查询时分配的别名)TestModel

PS:我setFetchMode从代码中删除了。不知何故,这不适用于上述方法。

于 2013-06-20T01:23:16.403 回答