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

Mar*_*kis 22 hibernate criteria outer-join

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

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

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

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

干杯!

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

sda*_*ids 36

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

..... createAlias("产品","产品",Criteria.LEFT_JOIN);

  • 现在已弃用,请使用Ankit的答案 (2认同)

Ank*_*rma 23

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

.... createAlias("employee","emp",JoinType.LEFT_OUTER_JOIN)