Oracleデータベースの多対多の関係で、以下のような2つのテーブルがあります。
生徒テーブル
...................
ID(主キー)
FIRSTNAME
LASTNAME
EMAIL
PHONE
コース表
カラム名
............
ID(主キー)
ROOM
NAME
これらは私が持っている2つのテーブルで、中間テーブルはこのようなものです
Student_Course
…………
カラム名
…………
STUDENT_ID(学生表の
主キーと外国語キー) COURSE_ID(コース表の主キーと外国語キー)
これには2つのエンティティクラスがあります
Student.java
.........
import javax.persistence.*;
import java.util.*;
@Entity
@Table(name = "student")
public class Student {
@Id
@GeneratedValue
private Integer id;
// @ManyToMany(fetch=FetchType.LAZY,cascade =
// CascadeType.ALL,targetEntity=Course.class)
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "student_course", joinColumns = @JoinColumn(name = "student_id"), inverseJoinColumns = @JoinColumn(name = "course_id"))
private List<Course> follows;
@Column
private String firstname;
@Column
private String lastname;
@Column
private String email;
@Column
private String phone;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public List<Course> getFollows() {
return follows;
}
public void setFollows(List<Course> follows) {
this.follows = follows;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
Course.java …………
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import java.util.*;
@Entity
@Table(name = "course")
public class Course {
@Id
@GeneratedValue
private Integer id;
// @ManyToMany(fetch=FetchType.LAZY,cascade =
// CascadeType.ALL,targetEntity=Student.class)
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "student_course", joinColumns = @JoinColumn(name = "course_id"), inverseJoinColumns = @JoinColumn(name = "student_id"))
private List<Student> followedBy;
private String room;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public List<Student> getFollowedBy() {
return followedBy;
}
public void setFollowedBy(List<Student> followedBy) {
this.followedBy = followedBy;
}
public String getRoom() {
return room;
}
public void setRoom(String room) {
this.room = room;
}
}
ここで関係は正しく機能します...
students.jsp
...................................................
このページでは、学生のデータと 2 つのデータが表示されます。学生にコースを追加するためのリンクと、学生を削除するためのリンク
................................. .......
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<h2>Users Manager</h2>
<form:form method="post" action="addstudent.html" commandName="student">
<table>
<tr>
<td><form:label path="firstname"><spring:message code="label.firstname"/> </form:label></td>
<td><form:input path="firstname" /></td>
</tr>
<tr>
<td><form:label path="lastname"><spring:message code="label.lastname"/></form:label></td>
<td><form:input path="lastname" /></td>
</tr>
<tr>
<td><form:label path="email"><spring:message code="label.email"/></form:label></td>
<td><form:input path="email" /></td>
</tr>
<tr>
<td><form:label path="phone"><spring:message code="label.telephone"/></form:label></td>
<td><form:input path="phone" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="<spring:message code="label.add"/>"/>
</td>
</tr>
</table>
</form:form>
<h3>Users</h3>
<c:if test="${!empty studentsList}">
<table>
<tr>
<th><spring:message code="label.lastname"/></th>
<th><spring:message code="label.firstname"/></th>
<th><spring:message code="label.email"/></th>
<th><spring:message code="label.telephone"/></th>
<th> </th>
<th> </th>
</tr>
<c:forEach items="${studentsList}" var="student">
<tr>
<td>${student.lastname}</td>
<td>${student.firstname}</td>
<td>${student.email}</td>
<td>${student.phone}</td>
<td><a href="delete/${student.id}"><spring:message code="label.remove"/></a></td>
<td><a href="studentcourses/${student.id}"><spring:message code="label.courses"/>
</a></td> </tr>
</c:forEach>
</table>
</c:if>
................................... コース リンク コース ページをクリックすると、コース テーブルからのコースのリストを含む 1 つのドロップダウン リストが表示されます。ここでは、コースを選択して学生に割り当てています。
course.jsp
.............
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<h2>Courses Manager</h2>
<form:form method="post" action="addcourse.html" commandName="course">
<table>
<tr>
<td><form:label path="room"><spring:message code="label.room"/></form:label></td>
<td><form:input path="room"/></td>
</tr>
<tr>
<td><form:label path="name"><spring:message code="label.name"/></form:label></td>
<td><form:input path="name"/></td>
<tr>
<td colspan="2">
<input type="submit" value="<spring:message code="label.add"/>"/>
</td>
</tr>
</table>
</form:form>
<h3>Courses</h3>
<c:if test="${!empty coursesList}">
<table class="data">
<tr>
<th><spring:message code="label.name"/></th>
<th><spring:message code="label.room"/></th>
<th></th>
</tr>
<c:forEach items="${coursesList}" var="course">
<tr>
<td>${course.name }</td>
<td>${course.room}</td>
<td><a href="courses/delete/${course.id}">delete</a></td>
</tr>
</c:forEach>
</table>
</c:if>
<c:if test="${!empty students}">
<table class="data">
<tr>
<th><spring:message code="label.firstname"></spring:message></th>
<th><spring:message code="label.lastname"></spring:message></th>
<th><spring:message code="label.email"></spring:message></th>
<th><spring:message code="label.telephone"></spring:message></th>
</tr>
<c:forEach items="${students}" var="student">
<tr>
<td>
${student.firstname}
</td>
<td>
${student.lastname}
</td>
<td>
${student.email}
</td>
<td>
${student.phone}
</td>
</tr>
</c:forEach>
</table>
</c:if>
このJSPでは、コースのリストが表示されます...
特定のコースの学生のリストを表示するにはどうすればよいですか..
次のコードを使用して、コースに基づいて学生を取得しようとしました........ ……
From Course c
ここで、特定のコースの学生の正しい詳細を取得しますが、それらを次のように表示できませんでした
course name.....>student1
.....>student2
......>student3
そのように、詳細を表示したい...これを達成するために私に提案してもらえますか...