SpringBoot JPA - User 和 UserStats 之间映射的多对一关系,但是当我从 Repo 获取 User 时,没有 UserStats 实体?

SpringBoot JPA - Many To One relation mapped between User and UserStats, but when I get the User from Repo, has no UserStats entities?

我有一个域实体用户,因为我需要为竞争性和非竞争性游戏的每个用户创建 2 个独立的统计数据集,它与 UserStats 有一对多关系,每个用户应该包含 2 个 UserStat 对象列表 userStats 对象。

但是,当我调用 userRepo.findAllBy(SomeCondition) 时,返回的 List 包含 User 对象但那些 User 对象不包含 UserStat 对象?

用户Class:

@Entity(name = "User")
@Table(name = "user")
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column(name = "username", unique = true)
    private String username;

    @Column(name = "password")
    private String password;

    private String name;
    private String email;
    private String location;

    @JsonIgnore
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
    private List<UserStats> userStats;
}

用户统计CLASS:

@Entity()
@Table(name = "userStats")
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class UserStats {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long userStatsId;

    private Integer victories;
    private Integer draws;
    private Integer defeats;
private boolean isLeagueUserStats;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id")
    private User user;
}

用户服务注册方法:

    public void signUpUser(User user) {
        user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));


        User savedUser = userRepository.save(user);

        List<UserStats> userStatsList = new ArrayList<>();

        UserStats userStats = new UserStats(0, 0, 0,  false, savedUser);
        UserStats leagueUserStats = new UserStats(0, 0, 0, true, savedUser);

        userStatsRepository.save(userStats);
        userStatsRepository.save(leagueUserStats);

        userStatsList.add(userStats);
        userStatsList.add(leagueUserStats);

        user.setUserStats(userStatsList);

        User savedUser2 = userRepository.save(user);

}

我怎样才能做到在保存用户实体时它也保存它包含的 UserStats?当您从包含 userStats 列表的存储库中检索用户对象时,我该如何做到这一点?

谢谢

可能是你需要加级联才能让他级联保存

@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)

而且,我不确定您是否有意使用 LAZY fetchType,但是如果您在任何时候加载某些数据时遇到问题(我的意思是,如果它只给您带来空数据),它可能是因此,在这种情况下,您将不得不使用 EAGER 而不是 LAZY