日期:2014-05-20  浏览次数:20818 次

现求hibernate中多表查询语句?
现求hibernate中多表查询语句?

权限表中有列 (权限ID,教师ID,课程ID,具有权限),等列,
教师表中有列 (教师ID,教师姓名,教师部门),等列,
课程表中有列 (课程ID,课程名),等列,

权限表中的 教师ID,课程ID,是对另两个表的主键的引用, 权限表中的主键为权限ID,

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

权限.java
Java code

class 权限{
教师 js;
课程 kc;
}

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

------解决方案--------------------
还不知道你要查什么。。。。。
课程表 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();