Как добавить новую строку данных с помощью Spring JPA - PullRequest
0 голосов
/ 14 марта 2020

У меня есть небольшой спортивный проект, в который я могу добавить пользователя, команду, игроков и игроков Stats et c. У меня проблема с моделью игрока. В основном, когда я пытаюсь добавить новую строку данных, она просто обновляет мою существующую, хотя я использую аннотацию @ManyToOne на модели.

Поэтому, когда я открываю страницу статистики для игрока, я ожидаю, что быть в состоянии увидеть несколько экземпляров, потому что я хотел бы, чтобы в каждой игре, в которую они играют, была строка.

Спасибо

1. Модель игрока

@Data
@Entity
@Table(name="User_Player")
public class Player implements Serializable {

@OneToOne
private User user;

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;

private String playerName;
private String dob;
private String hometown;
private String weight;
private String height;
private Position position;

2. Контроллер игрока

@Slf4j
@Controller
@SessionAttributes("Player")
public class PlayerController {

private PlayerRepository playerRepository;

public PlayerController(PlayerRepository playerRepository) {this.playerRepository = 
playerRepository;}

@Autowired
PlayerRepository service;


 @GetMapping("/player")
 public String displayPlayer(@PageableDefault(size = 10, sort = "playerName") Pageable 
  pageable,
                           Model model) {
    Page<Player> page = playerRepository.findAll(pageable);
    List<Sort.Order> sortOrders = page.getSort().stream().collect(Collectors.toList());
    if (sortOrders.size() > 0) {
        Sort.Order order = sortOrders.get(0);
        model.addAttribute("sortProperty", order.getProperty());
        model.addAttribute("sortDesc", order.getDirection() == Sort.Direction.DESC);
    }
    model.addAttribute("page", page);
    return "player";
}



@GetMapping("/addPlayer")
public String showSignUpFormPlayer(User user) {
    return "addPlayer";
}

@PostMapping("/addPlayer")
public String processPlayer(@Valid Player player, BindingResult result, SessionStatus 
  sessionStatus,
                            @AuthenticationPrincipal User user, Model model) {
    if (result.hasErrors()) {
        return "addPlayer";
    }

    player.setUser(user);
    service.save(player);
    model.addAttribute("player", service.findAll());
    return "redirect:/player";
}



 @GetMapping("/editPlayer/{id}")
 public String showUpdatePlayerForm (@PathVariable("id") long id, Model model){
    Player player = service.findAllById(id);
    model.addAttribute("player", player);
    return "editPlayer";
 }

 @PostMapping("/updatePlayer/{id}")
 public String updatePlayer ( @PathVariable("id") long id, @Valid Player player,
                             BindingResult result, Model model){
    if (result.hasErrors()) {
        player.setId(id);
        return "editPlayer";
    }


    service.save(player);
    model.addAttribute("player", service.findAll());
    return "redirect:/player";
}

3. Модель игрока Stats

public class PlayerStats implements Serializable {

@ManyToOne
private Player player;


private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;

private int td;
private int rushYards;
private int recYards;
private int returnYards;
private int throwingYards;
private int throwAttenpts;
private int throwSuccess;
private int receptions;
private int rushTD;
private int recTD;
private int fumbles;
private int fumblesRecovered;
private int forcedFumbles;
private int sacks;
private int puntsBlocked;
private int fgScored;
private int fgMissed;
private int punts;
private int tackle;

4. Контроллер статистики игрока

@Slf4j
@Controller
@SessionAttributes("PlayerStats")
public class PlayerStatsController {

private PlayerStatsRepository playerStatsRepository;

public PlayerStatsController(PlayerStatsRepository playerStatsRepository) { 
this.playerStatsRepository = playerStatsRepository;}

@Autowired
PlayerStatsRepository service;



@GetMapping("/addPlayerStats/{id}")
public String showSignUpFormPlayer1(Player player) {
    return "addPlayerStats";
}

@PostMapping("/addPlayerStats/{id}")
public String processPlayer1(@Valid PlayerStats playerStats, BindingResult result, 
 SessionStatus sessionStatus,
                             Player player, Model model) {
    if (result.hasErrors()) {
        return "player";
    }

    playerStats.setPlayer(player);
    service.save(playerStats);
    model.addAttribute("playerStats", service.findAll());
    return "redirect:/player";
}


@GetMapping("/editPlayerStats/{id}")
public String showUpdateFixturesForm (@PathVariable("id") long id, Model model){
    PlayerStats playerStats = service.findAllById(id);
    model.addAttribute("playerStats", playerStats);
    return "editPlayerStats";
}

@PostMapping("/editPlayerStats/{id}")
public String processPlayer1d(@Valid PlayerStats playerStats, BindingResult result, 
 SessionStatus sessionStatus,
                             Player player, Model model) {
    if (result.hasErrors()) {
        return "player";
    }

    playerStats.setPlayer(player);
    service.save(playerStats);
    model.addAttribute("playerStats", service.findAll());
    return "redirect:/player";
}

//PlayerStats

 @GetMapping("/PlayerStats/{id}")
 public String showUpdatePlayerForm3 (@PathVariable("id") long id, Model model){
    PlayerStats playerStats = service.findAllById(id);
    model.addAttribute("playerStats", playerStats);
    return "playerStats";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...