这样就要用面向对象的思想。
只需要查找 classID 所对应的记录就可以了,这样就得到一个 Classes 类型的对象,再用其 getStudents() 方法即可。
只需要查找 classID 所对应的记录就可以了,这样就得到一个 Classes 类型的对象,再用其 getStudents() 方法即可。
解决方案 »
- applicationContext.xml获取application.properties全局变量出错
- hibernate映射的问题: type="java.lang.String" style="string"
- JAVA二维字符串数组和一维数组的存储
- 为什么ssh中list转换成json打印如下,为什么有的值拿不出来呢?
- 200分求struts文件下载实例。分不够可再加。
- dom,sax,jdom,jaxp,xerces有什么区别?现在项目要用,不知道选哪个,希望高手指点
- 有懂EJB ,weblogic 大连的朋友吗?
- WEBLOGIC提示:stax不能用,请换woodstox, 怎么换?
- tomcat启动卡住不动
- 一个在用spring data jpa中遇到的一个非常奇怪的错,求大神解答,跪谢!
- 使用DispatchAcion的一个小问题
- 一个HQL的问题
这是Hibernate的映射机制,由于你Student表中classID是外键,Hibernate是超面向对象的,所以在你的Student类里面,数据库表中classID对应的就是一个Classes类的对象了.
由于你的Classes和Student是一对多的关系,在你的Classes里面肯定有个Set<Student>的集合.
我的实现步骤:
譬如你的类里面有个可以的到学生对象的方法叫做getStudentById(),这样得到一个对象之后,根据你类里面的属性调用getClasses()得到一个Classes对象,有了这个对象,你又可以根据属性getStudents()返回一个Set<Student>的集合.
主要实现代码:public List<Student> getStudents(){
/.........
Student stu = HibernateSessionFactory.get(id);
/.........
/.........
/.........
Classes classes = stu.getClasses();
List<Student> lstStu = classes.getStudents();
return lstStu;
}不需要HQL语句就可以实现.
try {
Classes cl=(Classes)super.getSession().load(Classes.class, classID);
String queryString = "from Student as model where model.classes"
+ "= ?";
Query query=super.getSession().createQuery(queryString);
query.setParameter(0, cl);
return query.list();
} catch (RuntimeException re) {
throw re;
}
}