我试图计算运行时的成就数量并将其设置到页面内的应用程序对象中,但总成就超出了该对象。
基本上,totalAchievements
应该位于每个应用程序内部。
Controller
Page<UserApplication> userApplications = userApplicationRepository.findByUserUsername(pageable, username);
for(UserApplication userApplication : userApplications.getContent()) {
long totalAchievements = achievementRepository.countByApplicationApplicationId(userApplication.getApplication().getApplicationId());
userApplication.setTotalAchievements(totalAchievements);
}
return new ResponseEntity<>(userApplications, HttpStatus.OK);
型号
@Entity
@Table(name = "USER_APPLICATION")
public class UserApplication {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
@JoinColumn(name = "userId", referencedColumnName="userId")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
@JsonIgnore
private User user;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
@JoinColumn(name = "applicationId", referencedColumnName="applicationId")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
private Application application;
@Transient
private long totalAchievements;
}
最佳答案
如果您希望totalAchievements 位于应用程序对象内,则必须在应用程序实体内添加该成员。
@Entity
class Application{
@Transient
private long totalAchievements;
}
然后将其设置为
userApplication.getApplication().setTotalAchievements(totalAchievements);
关于java - 循环列表并更改属性 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60658430/