Spring Boot中的最佳做法是在投影中模拟两个实体之间的自定义关系。
我的实体Participation
链接到Competition
,User
和Team
。
public class Participation
{
@Id
private String id;
@NonNull
@OneToOne
private Competition competition;
@OneToOne
private Team team;
@NonNull
@OneToOne
private User user;
private String info;
}
在我的项目中,我想将特定Users
的所有参与Team
与Competition
相关联。为此,我写了一个CompetitionDTO
,其字段List<User> participants
由自定义CompetitionService
填充:
public Page<CompetitionDTO> teamParticipations (Team team, Pageable pageable)
{
Page<CompetitionDTO> page = cRep.findTeamParticipation(team, pageable);
page.forEach(competition -> competition.setParticipants(pRep.findParticipants(competition, team)));
return page;
}
我不太喜欢这种方法,因为我认为有一种更优雅的方法可以用Spring做到这一点。