【发布时间】:2022-01-29 22:08:35
【问题描述】:
我有一些映射将List<Entrants> 保存在Event 实体中,每次将新的Entrants 保存到Event 时,我都会将Entrant 添加到List<Entrants> 但是当我得到List<Entrants> 它说 size = 30 即使我只有一个 Entrants 对象。它似乎总是加 30,所以如果我保存 4 Entrants 它会说它是 120。
保存新的Entrants 时,
public void save(String event, long memberId) {
Event e = eventRepo.findEventByName(event);
Member m = memberRepo.getOne(memberId);
Entrants en = new Entrants(m, e, 0, 0);
//Update the current entrants entered in an event by 1
e.setCurrentEntrants(e.getCurrentEntrants() + 1);
eventRepo.save(e);
//Get the current list of entrants for this event
List<Entrants> entrants = e.getEntrants();
//Add the current entrant to the list of entrants for this event.
entrants.add(en);
entrantsRepo.save(en);
}
在运行此代码以添加新的Entrant 后,它可以正常工作,并且在调用entrants.add(en) 后,List<Entrants> entrants 的大小如预期的那样为 1。
当我然后调用getEntrants() 时(注意我想返回一个 List 因此返回类型)
public List<Member> getEntrants(String eventName){
Event event = eventRepo.findEventByName(eventName);
List<Entrants> entrants = event.getEntrants();
List<Member> members = new ArrayList<>();
for(Entrants entrant: entrants) {
members.add(entrant.getMember());
}
System.out.println(entrants.size());
return members;
}
它说 `List is 30!它显示 30 名参赛者完全相同。如果我保存 4 个不同的参赛者,那么它会显示第一个参赛者的 30 个,然后是下一个参赛者的 30 个,依此类推。
【问题讨论】:
标签: spring-boot spring-data-jpa