Отображение отношений для одного к многим и добавление нового столбца - PullRequest
0 голосов
/ 23 января 2020

У меня есть две таблицы Player и Match. Мне нужны отношения OnetoMany между Player и Match, чтобы вывод JSON, который я получаю, был следующим: -

{
     id : 1,
     name : "Peter",
     nationality: "Indian",
     matches: [
                    {
                       id : 1,
                       location: "Mohali"
                       TournamentName: "FA Cup"
                    },
                    {
                       id : 2,
                       location: "Kolkata"
                       TournamentName: "ISL league"
                    }
             ]
}

Не могли бы вы подсказать, как определить аннотации и получить приведенный выше результат? У меня есть код, написанный следующим образом: -

@Entity
public class Match {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="match_id")
    private Integer mId;

    private String seriesName;

    private String location;

    @ManyToOne
    private Player player;

, и Player выглядит так: -

@Entity
public class Player {

    @Id
    @GeneratedValue
    @Column(name="player_id")
    private Integer pId;

    private String pName;

    private String cricketTeam;

    @OneToMany(mappedBy = "player" ,cascade = CascadeType.ALL)
    private List<Match> matches;

Кроме этого, мне также нужно иметь дополнительный атрибут в моем результате JSON, что: -

totalGoals: 8

Этот атрибут будет вычислять общее количество голов, забитых игроком в каждом матче, поэтому должна быть новая таблица со столбцами: - "player_id", "match_id "and" totalGoal "

Было бы очень полезно, если бы вы могли предоставить хороший подход к нему

1 Ответ

2 голосов
/ 23 января 2020

Для вашей первой проблемы я не думаю, что вам нужно предпринимать какие-либо дополнительные усилия, пытаясь использовать Player в качестве возвращаемого объекта RestController (я бы предпочел DTO как возвращающий объект, такой как PlayerDTO, поскольку вы можете вносить пользовательские изменения в соответствии с требованиями)

@RequestMapping<!--mapping--!>
public ResponseEntity<Player> getPlayer(<expected Params as playerId>)
{
    return ResponseEntity.ok(service.find(id));
}

Для второго вопроса вы можете сохранить параметр totalGoals в самом объекте сопоставления, вам не понадобится другая таблица сопоставления, пока у вас нет другого требования

...