В моей программе у меня есть три класса, и для каждого из них у меня есть три коллекции в одной базе данных. Класс игрока:
package thesisMongoProject;
import javax.validation.constraints.NotBlank;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "player")
public class Player {
@Id
@NotBlank
private String nickname;
@NotBlank
private String firstname;
@NotBlank
private String lastname;
@NotBlank
private String email;
public Player(String nickname, String firstname, String lastname, String email) {
super();
this.nickname = nickname;
this.firstname = firstname;
this.lastname = lastname;
this.email = email;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Player [nickname=" + nickname + ", firstname=" + firstname + ", lastname=" + lastname + ", email="
+ email + "]";
}
}
Класс игры:
package thesisMongoProject;
import javax.validation.constraints.NotBlank;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "game")
public class Games {
@Id
@NotBlank
private String code;
@NotBlank
private String title;
@NotBlank
private String software_house;
@NotBlank
private String version;
@NotBlank
private String release_year;
public Games(@NotBlank String code, @NotBlank String title, @NotBlank String software_house,
@NotBlank String version, @NotBlank @NotBlank @NotBlank String release_year) {
super();
this.code = code;
this.title = title;
this.software_house = software_house;
this.version = version;
this.release_year = release_year;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSoftware_house() {
return software_house;
}
public void setSoftware_house(String software_house) {
this.software_house = software_house;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public @NotBlank String getRelease_year() {
return release_year;
}
public void setRelease_year(@NotBlank String release_year) {
this.release_year = release_year;
}
@Override
public String toString() {
return "Games [code=" + code + ", title=" + title + ", software_house=" + software_house + ", version="
+ version + ", release_year=" + release_year + "]";
}
}
И класс Score:
package thesisMongoProject;
import java.util.Date;
import java.util.List;
import javax.validation.constraints.NotBlank;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import com.fasterxml.jackson.annotation.JsonView;
@Document(collection = "score")
public class Score {
@Id
@NotBlank
@JsonView(Views.class)
private String score;
@NotBlank
@JsonView(Views.class)
private String player;
@NotBlank
@JsonView(Views.class)
private String code;
@JsonView(Views.class)
private Date date;
private List<History> history = null;
public Score(@NotBlank String score, String player, String code, List<History> history, Date date) {
super();
this.score = score;
this.player = player;
this.code = code;
this.history = history;
this.date = date;
}
public String getScore() {
return score;
}
public void setScore(String score) {
this.score = score;
}
public String getPlayer() {
return player;
}
public void setPlayer(String player) {
this.player = player;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public List<History> getHistory() {
return history;
}
public void setHistory(List<History> history) {
this.history = history;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return "Score [score=" + score + ", player=" + player + ", code=" + code + ", history=" + history + ", date="
+ date + "]";
}
}
Класс просмотра:
package thesisMongoProject;
public class Views {
public static class Creat{}
}
Метод POST:
//Create Score
@PostMapping
public ResponseEntity<?> createScore(@RequestBody @JsonView(Views.class) @Valid Score score) {
//check player exist
Player p = prepo.findByNickname(score.getPlayer());
//check game's cod exist
Games g = grepo.findByCode(score.getCode());
//check score exist
Score s = srepo.findByScore(score.getScore());
if(s != null)
{
return ResponseEntity.status(409).body("Conflict!!");
}
else if((p != null) || (g != null)) {
srepo.save(score);
return ResponseEntity.status(201).body("Created!");
}
else {
return ResponseEntity.status(400).body("Bad Request!");
}
}
Фактически, в методе POST, тело POST запросы содержат только игрока, игру, счет, дату, а не историю, и для этой проблемы я использовал аннотацию @JSONView (Views.class). Когда выдается запрос POST, служба «счет» должна проверять, существуют ли указанные «игрок» и «игра» (т. Е. Существует ли и игрок с этим ником, и игра с этим кодом); в противном случае 400 Bad Request. Сначала я использовал @DBRef для проигрывателя и кода, например, @DBRef String player @DBRef String code внутри класса Score, и я использовал Publi c Score findByPlayerAndCode (String player, String code); внутри моего ScoreRepository для проверки игрока и игры; код существует или нет, но у меня была ошибка. Затем я использовал экземпляры PlayerRepository и GameRepository для этого, но для меня ничего не изменилось, и моя программа по-прежнему не работает. не могли бы вы помочь мне, что я должен сделать, пожалуйста