我想使用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 回答
如果您需要在产品表上保持联接,请执行以下操作:
Sdavids回答的API现在是
deprecated
. 它的更新版本是连接在SQL请求中 . 它不能是懒惰的 .
使用Hibernate,要懒惰地检索这些数据,只需将其从HQL请求中排除即可 . 然后,当您访问实体上的getter时(如果Session仍处于打开状态),它将自动加载(您不必编写请求的那部分) .