Hibernate3.2.5を使用しています。Aを使用するJOIN
と、Hibernateによって生成されたSQLクエリがOracle9iリリースより前の構文であることがわかります。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クエリが生成されますか?
2)Outer Join
この場合の実行方法は?のオプションは表示されますがLEFT JOIN
、FULL JOIN
何も表示されませんRIGHT JOIN
編集
Q. 2タイプミスでした、RIGHT JOIN
これらについて教えてください。
よろしく、