首页 文章

(懒惰)使用Hibernate Criteria API进行LEFT OUTER JOIN

提问于
浏览
22

我想使用Criteria API在两个表之间执行LEFT OUTER JOIN . 我在Hibernate文档中找到的就是这个方法:

Criteria criteria = this.crudService
            .initializeCriteria(Applicant.class)
            .setFetchMode("products", FetchMode.JOIN)
            .createAlias("products", "product");

但是,这会执行内部联接或右外部联接,因为它返回的结果数量 .

我也希望我的加入是懒惰的 . 我怎样才能做到这一点?

干杯!

UPDATE: 似乎使用别名会自动连接INNER JOIN . "background story"中有些东西我尚未掌握 . 所以,今天没有别名 . 这给我留下了对两个表应用限制的问题,因为它们都有一个列(或属性,如果这更合适)'name' .

3 回答

  • 23

    如果您需要在产品表上保持联接,请执行以下操作:

    ..... createAlias(“产品”,“产品”,Criteria.LEFT_JOIN);

  • 0

    Sdavids回答的API现在是 deprecated . 它的更新版本是

    .... createAlias(“employee”,“emp”,JoinType.LEFT_OUTER_JOIN)

  • 36

    连接在SQL请求中 . 它不能是懒惰的 .


    使用Hibernate,要懒惰地检索这些数据,只需将其从HQL请求中排除即可 . 然后,当您访问实体上的getter时(如果Session仍处于打开状态),它将自动加载(您不必编写请求的那部分) .

相关问题