我正在使用休眠 3.2.5。当我使用 a 时,JOIN
我可以看到 Hibernate 生成的 sql 查询是 Oracle 9i 版本之前的语法。查询有 (+) 符号来表示LEFT OUTER JOIN
而不是使用LEFT OUTER JOIN
等等。
对于这个标准:
Criteria criteria = session.createCriteria(Dept.class).createAlias("empMap","id",CriteriaSpecification.LEFT_JOIN).add(Restrictions.eq("deptId", new Integer(6)));
这是生成的 SQL 查询:
select this_.DEPT_ID as DEPT1_1_1_, this_.DEPT_NAME as DEPT2_1_1_, id1_.DEPT_ID as DEPT2_3_, id1_.EMP_ID as EMP1_3_, id1_.EMP_ID as formula0_3_, id1_.EMP_ID as EMP1_0_0_, id1_.DEPT_ID as DEPT2_0_0_, id1_.EMP_NAME as EMP3_0_0_, id1_.AGE as AGE0_0_, id1_.SEX as SEX0_0_ from dept this_, emp id1_ where this_.DEPT_ID=id1_.DEPT_ID(+) and this_.DEPT_ID=?
我的问题是:
1)为什么查询具有旧语法?如果我使用 Hibernate 4.0 或最新版本,它会生成新的语法 SQL 查询吗?
Outer Join
2)在这种情况下如何执行?我可以看到选项LEFT JOIN
,FULL JOIN
但看不到任何内容RIGHT JOIN
编辑
Q. 2 这是一个拼写错误,它的RIGHT JOIN
请让我知道这些。
问候,