求助关于jpa的多对多关系以及extremecomponent组件展示多对多关系的问题
一。#目前遇到的难题是在ec table获取不到老师的集合,以及映射关系的时候遍历了俩次小张
我要得到的页面结果是
学生名字 所有老师的名字
小张 [张老师,易做图]
但是目前根据我这个jsp页面设计在ec表格里面只能获取到所有的学生,而得不到学生关联到的老师
目前页面输出的效果:
小张 iterator: 张老师 张老师
小张 iterator: 张老师 张老师
index.jsp
<%--这里能正常获取到学生关联到老师的信息 --%>
<%--遍历所有的学生 --%>
<s:iterator value="#request.student" id="student">
<%--获取学生名字 --%>
<s:property value="#student.name"/>
<%--根据学生获取所有的老师list对象遍历 --%>
iterator:
<s:iterator value="#student.teachers" id="teacher">
<%--获取老实名字--%>
<s:property value="#teacher.name"/>
</s:iterator>
<br/>
</s:iterator>
<%--这里能正常获取到学生关联到老师的信息 --%>
<%--这里获取不到学生关联到老师的信息 --%>
<ec:table action="as!getAllStudent.ec" items="Student" var="stu" retrieveRowsCallback="limit" >
<ec:exportXls fileName="Student.xls" tooltip="export Excel" />
<ec:row >
</s:iterator>
<ec:column property="id" title="extremecomponent.selectall" sortable="false" width="10%" viewsAllowed="html">
<input type="checkbox" name="objectid" value="${stu.id}" onclick="checkobjectid()" />
</ec:column>
<ec:column property="id" title="extremecomponent.stu.id" sortable="false" width="10%" viewsAllowed="html"></ec:column>
<ec:column property="name" title="extremecomponent.stu.name" ></ec:column>
<%--根据stu获取所有的老师list对象遍历,目前放到ec这里无法获取老师的名字,现在遇到的困难就在这里,只要可以我这里有一个页面列表字段,展示所有的老师名称[张老师-易做图]--%>
<s:iterator value="#student.teachers" id="teacher">
ec: iterator <s:property value="#teacher.name"/><br/>
</ec:row>
</ec:table>
<%--这里获取不到学生关联到老师的信息 --%>
二 目前我的java类简单介绍一下,是多对多的关系,使用的是annotations注释
public class Student{
pirvate int student_id
private String name;
private Set<Teacher> teachers = new HashSet<Teacher>();
@ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, fetch = FetchType.EAGER)
@JoinTable(name = "student_teacher", joinColumns = { @JoinColumn(name = "student_id") }, inverseJoinColumns = { @JoinColumn(name = "teacherid") })
public Set<Teacher> getTeachers() {
return teachers;
}
public void setTeachers(Set<Teacher> teachers) {
this.teachers = teachers;
}
}
publuc class Teacher{
pirvate int teacherid
private String name;
@ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, mappedBy = "teachers")
private Set<Student> students = new HashSet<Student>();
public Set<Student> getStudents() {
return students;
}
public void setTeachers(Set<Student> students) {
this.students = students;
}
}
三 表关系
学生表 student
id name
1 小张
老师表 teacher
1 张老师
2 易做图
学生-老师中间表 student_teacher
id student_id teacherid
1 1 1
1 1 2
--------------------编程问答-------------------- 怎么没有人帮忙吗
补充:Java , Web 开发