如何使用标准查询来应用左连接,我只能在互联网上找到内部连接条件。
Criteria cr = this.sessionFactory.getCurrentSession().createCriteria(A.class, "a").createAlias("a.division", "division");
List<A> list = cr.list();除法是A类中的一个实体,这是返回我的内部连接结果。我想在除法实体上申请左加入:
select * from A as a left join divisions as division on division.id = a.id;表A数据:
id name division_id
1 first name 1
3 sec name 2
6 fourth name 2
5 3rd name NULL表司数据:
id type
1 F
2 G内连接:
select * from A as a inner join division where a.division_id = division.id内部连接结果:
+----+-------------+-------------+----+------+
| id | name | division_id | id | type |
+----+-------------+-------------+----+------+
| 1 | first name | 1 | 1 | F |
| 3 | sec name | 2 | 2 | G |
| 6 | fourth name | 2 | 2 | G |
+----+-------------+-------------+----+------+左联接查询:
select * from A as a left join division on division.id = a.division_id;左加入结果:
+----+-------------+-------------+------+------+
| id | name | division_id | id | type |
+----+-------------+-------------+------+------+
| 1 | first name | 1 | 1 | F |
| 3 | sec name | 2 | 2 | G |
| 6 | fourth name | 2 | 2 | G |
| 5 | 3rd name | NULL | NULL | NULL |
+----+-------------+-------------+------+------+发布于 2016-01-26 06:37:50
如果您想要左联接,您可以在createAlias中提到它。默认为inner join
Criteria cr = this.sessionFactory.getCurrentSession().createCriteria(A.class, "a")
.createAlias("a.division", "division", CriteriaSpecification.LEFT_JOIN); // Add join type
List<A> list = cr.list();https://stackoverflow.com/questions/35001512
复制相似问题