我的查询是:
List<EmpModel> EmpData = sess2.createCriteria(EmpModel.class)
.setFetchMode("TestModel", FetchMode.JOIN)
.add(Property.forName("id").in(emp_ids)).list();
现在,触发的查询完全正确。它返回 test 和 emp 表的一对一连接。但是,返回的打印语句仅提供 EmpModel 表中的值。我相信原因是上面提到的 emp_ids 总是为零,测试表中的每个值都是空的。有人可以告诉我如何克服这个错误吗?
最佳答案
如果您希望条件返回 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>>
,因为现在查询将返回 HashMap
的列表s。每个HashMap都会有一个"this"
条目指向 EmpModel
,以及 "tm"
条目(我们在构建查询时分配的别名)指向相应的 TestModel
.
PS:我删除了 setFetchMode
从代码中。不知何故,这不适用于上述方法。
关于java - 为什么我的 hibernate join 只返回一张表的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17159731/