一行對應一個物件,物件數量由另一張表記錄筆數決定,物件內部還引用其他物件(巢狀結構)。
// Servlet / Controller
List parents = new ArrayList<>();
for (ChildRecord rec : childTableRecords) {
Parent p = new Parent();
p.setId(rec.getId());
p.setName(rec.getName());
// 關聯子物件
p.setChild(new Child(rec.getChildId(), rec.getChildName()));
parents.add(p);
}
request.setAttribute("parents", parents);
request.getRequestDispatcher("/show.jsp").forward(req, resp);
<c:forEach items="${parents}" var="p">
<tr>
<td>${p.id}</td>
<td>${p.name}</td>
<td>${p.child.name}</td> <!-- 直接存取關聯物件 -->
</tr>
</c:forEach>
@Entity
public class Parent {
@Id @GeneratedValue Long id;
String name;
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List children = new ArrayList<>();
// getter/setter
}
@Entity
public class Child {
@Id @GeneratedValue Long id;
String name;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parent_id")
private Parent parent;
}
JSP 顯示多物件:後端裝 List