HQL (九) 连接查询

http://wlh269.iteye.com/blog/322050

连接查询(重要)
* 内连接
* 外连接(左连接/右连接)
参见:JoinQueryTest.java

内连接有三种:inner join ,join,“=”

Java代码 复制代码
  1. packagecom.wlh.hibernate;
  2. importjava.util.Iterator;
  3. importjava.util.List;
  4. importjunit.framework.TestCase;
  5. importorg.hibernate.Session;
  6. publicclassJoinQueryTestextendsTestCase{
  7. /**
  8. *内联结
  9. */
  10. publicvoidtestQuery1(){
  11. Sessionsession=null;
  12. try{
  13. session=HibernateUtils.getSession();
  14. session.beginTransaction();
  15. //====关键字join==========//
  16. Liststudents=session.createQuery("selects.name,c.namefromStudentsjoins.classesc").list();
  17. for(Iteratoriter=students.iterator();iter.hasNext();){
  18. Object[]o=(Object[])iter.next();
  19. System.out.println("id="+o[0]+",o[1]"+o[0]);
  20. }
  21. session.getTransaction().commit();
  22. }catch(Exceptione){
  23. e.printStackTrace();
  24. session.getTransaction().rollback();
  25. }finally{
  26. HibernateUtils.closeSession(session);
  27. }
  28. }
  29. /**
  30. *内联结
  31. */
  32. publicvoidtestQuery2(){
  33. Sessionsession=null;
  34. try{
  35. session=HibernateUtils.getSession();
  36. session.beginTransaction();
  37. //=======关键字innerjoin默认就是内连接,所以inner可以加上,也可以省略======//
  38. Liststudents=session.createQuery("selects.name,c.namefromStudentsinnerjoins.classesc").list();
  39. for(Iteratoriter=students.iterator();iter.hasNext();){
  40. Object[]o=(Object[])iter.next();
  41. System.out.println("id="+o[0]+",o[1]"+o[0]);
  42. }
  43. session.getTransaction().commit();
  44. }catch(Exceptione){
  45. e.printStackTrace();
  46. session.getTransaction().rollback();
  47. }finally{
  48. HibernateUtils.closeSession(session);
  49. }
  50. }
  51. /**
  52. *内联结
  53. */
  54. publicvoidtestQuery3(){
  55. Sessionsession=null;
  56. try{
  57. session=HibernateUtils.getSession();
  58. session.beginTransaction();
  59. //===========用"="实现内联===========//
  60. Liststudents=session.createQuery("selects.name,c.namefromStudents,Classescwheres.classes.id=c.id").list();
  61. for(Iteratoriter=students.iterator();iter.hasNext();){
  62. Object[]o=(Object[])iter.next();
  63. System.out.println("id="+o[0]+",o[1]"+o[0]);
  64. }
  65. session.getTransaction().commit();
  66. }catch(Exceptione){
  67. e.printStackTrace();
  68. session.getTransaction().rollback();
  69. }finally{
  70. HibernateUtils.closeSession(session);
  71. }
  72. }
  73. [b][color=red]外联接:能够查出2个表之间不相互关联的记录[/color][/b]
  74. <PREclass=javaname="code"></PRE>
  75. <BR>
  76. <BR>/**
  77. <BR>*外联结
  78. <BR>*/
  79. <BR>publicvoidtestQuery4(){
  80. <BR>Sessionsession=null;
  81. <BR>try{
  82. <BR>session=HibernateUtils.getSession();
  83. <BR>session.beginTransaction();
  84. <BR>//查询出所有的学生(包括没有班级的学生)
  85. <BR>Liststudents=session.createQuery("selects.name,c.namefromStudentsleftjoins.classesc").list();
  86. <BR>for(Iteratoriter=students.iterator();iter.hasNext();){
  87. <BR>Object[]o=(Object[])iter.next();
  88. <BR>System.out.println("id="+o[0]+",o[1]="+o[1]);
  89. <BR>}
  90. <BR>session.getTransaction().commit();
  91. <BR>}catch(Exceptione){
  92. <BR>e.printStackTrace();
  93. <BR>session.getTransaction().rollback();
  94. <BR>}finally{
  95. <BR>HibernateUtils.closeSession(session);
  96. <BR>}
  97. <BR>}
  98. <BR>
  99. <BR>
  100. <BR>
  101. <BR>/**
  102. <BR>*外联结
  103. <BR>*/
  104. <BR>publicvoidtestQuery5(){
  105. <BR>Sessionsession=null;
  106. <BR>try{
  107. <BR>session=HibernateUtils.getSession();
  108. <BR>session.beginTransaction();
  109. <BR>//查询出所有的班级,(包括没有学生的班级)
  110. <BR>Liststudents=session.createQuery("selects.name,c.namefromStudentsrightjoins.classesc").list();
  111. <BR>for(Iteratoriter=students.iterator();iter.hasNext();){
  112. <BR>Object[]o=(Object[])iter.next();
  113. <BR>System.out.println("id="+o[0]+",o[1]="+o[1]);
  114. <BR>}
  115. <BR>session.getTransaction().commit();
  116. <BR>}catch(Exceptione){
  117. <BR>e.printStackTrace();
  118. <BR>session.getTransaction().rollback();
  119. <BR>}finally{
  120. <BR>HibernateUtils.closeSession(session);
  121. <BR>}
  122. <BR>}
  123. <BR>
  124. <BR>
  125. <BR>}

你可能感兴趣的:(C++,c,Hibernate,JUnit,C#)