我有一个带有 derby 数据库的应用程序,并使用 eclipselink 作为持久性 api。假设我有一个带有团队列表的 gui。每支球队都有许多球员。团队类中的关系如下所示:
@OneToMany(mappedBy = "team", fetch = FetchType.LAZY, cascade = { CascadeType.ALL })
private List<player> players = new ArrayList<player>():
和这样的播放器类:
@ManyToOne(targetEntity = Team.class)
@JoinColumn(name = "teamID", nullable = false, referencedColumnName = "ID")
private Team team;
所以我现在开始我的应用程序,它填写了一个包含所有现有团队的列表:
public List<Team> getTeams()
{
TypedQuery<Team> query = em.createQuery("SELECT t FROM Team t", Team.class);
List<Team> teams = query.getResultList();
return teams;
}
到目前为止一切正常,只有球队被加载,而不是球员。假设我现在通过选择一个团队并为此执行命令来打开一个包含团队玩家的表。表中填满:
team.getPlayers();
所以现在这支球队的所有球员都加载了,因为现在需要他们。但是在我关闭表格后,它们仍然处于加载状态,但我想再次“卸载”它们,这样它们就不会留在内存中——我该怎么做?