java - 为什么我的 hibernate join 只返回一张表的查询?

标签 java hibernate join hibernate-criteria

我的查询是:

            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/

相关文章:

java - umano android slidinguppanel 2 views as sliding child 遇到麻烦

hibernate - JBPM 查询

java - 如何使用 Spring、Hibernate 3.3 和 c3p0 配置 MySQL 连接属性?

join - 集群信息 ConfigMap 中没有 JWS 签名 token - Kubernetes v1.7

Mysql 一个表与另外两个表基于标志列进行联接

java - 如何使用 Hamcrest 检查集合是否包含给定顺序的项目

java - 如何从netbeans向数据库插入数据?

c# - 如何从 SQL 连接中获取匹配和不匹配的行

java - eclemma 2 个分支中的 1 个未在 Junit 中覆盖

java - Hibernate 是否会在死锁时自动重启事务?