hibernate中最关键的就是关系如果你是查权限,直接查权限的对象,然后按照关系将对应的教师和课程取出

解决方案 »

  1.   

    你这样不需要多表查询语句啊,因为根据你的数据库的设计,教师类里面应该有一个权限的Set集合
    你直接拿出来就可以啊,查询语句hibernate自动生成,你应该看看hibernate的对应关系
    一对多,多对多啊
      

  2.   

    看起来像是1对1权限.javaclass 权限{
    教师 js;
    课程 kc;
    }
    权限.hbm.xml<one-to-one class="教师" constrained="true" />
    <one-to-one class="课程" constrained="true" />
    test.java权限 qx = (权限)session.createQuery("from 权限").list().get(0);
    qx.getJs();
    qx.getKc();
      

  3.   

    session.createSQLQuery("select 课程表.课程名,教师表.姓名/部门 from 课程表,教师表,权限表 where 权限表.课程ID=课程表.课程ID and 权限表.教师ID=教师表.教师ID and 权限表.权限ID=?")
      

  4.   

    还不知道你要查什么。。
    课程表  Course
    配置文件 course.xml
    <hibernate-mapping package="com.po">
    <class name="Course" table="Course">
    <id name="id" column="id">
    <generator class="native" />
    </id>
    <property name="name"  />
    <set name="teachers"  table="course_teacher"  inverse="true">
                <key column="id"/>
             <many-to-many column="teacherid"
                 class="Teacher"/>
            </set>
    </class>
    </hibernate-mapping>
    Course类
    public class Course{
    private long id;
    private String name;
    private Set teachers;
    }
    教师表  Teacher
    配置文件
    <hibernate-mapping package="com.po">
    <class name="Teacher" table="Teacher">
    <id name="id" column="id">
    <generator class="native" />
    </id>
    <property name="name"  />
    <set name="courses"  table="course_teacher"  inverse="true">
                <key column="id"/>
             <many-to-many column="courseid"
                 class="Course"/>
            </set>
    </class>
    </hibernate-mapping>
    教师类
    public class Teacher{
    private long id;
    private String name;
    private Set courses;
    }权限表就不用写配置文件了,对应于配置文件中course_teacher关联表。
    通过教师查课程, teacher.getCourses();
    通过课程查教师, course.getTeacher();
      

  5.   

    大家说的很对,谢谢大家。这块学的不行,刚看了一点就拿来做项目,我忘记了很重要的一点!我结了贴希望大家还能帮我想下我的怎么做,我是在STRUTS2的页面中用的,我要将结果在页面中迭代,谢谢!!!!!