当前位置:编程学习 > JAVA >>

求助关于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 开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,