Я пытаюсь разобраться с Spring Boot и базами данных.
Итак, у меня есть 2 сущности с @OneToMany
отношениями:
@Entity
public class Team {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int teamId;
@Column
private String teamTitle;
@Column
private String teamCity;
@ManyToOne
@JoinColumn(name = "conferenceId", nullable = false)
private Conference teamConference;
public Team() { super(); }
//some getters and setters
}
И второй:
@Entity
public class Conference {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int conferenceId;
private String conferenceTitle;
@OneToMany(mappedBy = "teamId")
private List<Team> conferenceTeams;
public Conference() {
super();
}
//some getters and setters
}
JSP страница:
<body>
<form:form method="post" modelAttribute="team">
<div>
<form:label path="teamTitle">Title</form:label>
<form:input path="teamTitle" type="text"/>
<form:label path="teamCity">City</form:label>
<form:input path="teamCity" type="text"/>
//DAHELL IS HERE
<div class="form-group">
<label for="conferenceList">Select conference:</label>
<select class="form-control" id="conferenceList">
<c:forEach items="${conference}" var="conf">
<option>${conf.conferenceTitle}</option>
</c:forEach>
</select>
</div>
<button type="submit" class="btn btn-success">Add</button>
</div>
</form:form>
// jquery etc
</body>
И контроллер класса:
@Controller
public class TeamsController {
@Autowired
private TeamDAO teamDAO;
@Autowired
private ConferenceDAO conferenceDAO;
@RequestMapping(value = "/schedule", method = RequestMethod.GET)
public String showSchedule(ModelMap model) {
model.put("conferences", conferenceDAO.findAll());
model.put("teams", teamDAO.findAll());
return "schedule";
}
@RequestMapping(value = "/new-team", method = RequestMethod.GET)
public String addNewTeam(ModelMap model) {
model.addAttribute("conference", conferenceDAO.findAll());
model.addAttribute("team", new Team());
return "new-team";
}
@RequestMapping(value = "/new-team", method = RequestMethod.POST)
public String addTeam(ModelMap model, Team newTeam) {
teamDAO.save(newTeam);
return "redirect:/schedule";
}
}
ConferenceDAO и TeamDAO - это просто интерфейсы, расширенные из JpaRepository.
Так что я пытаюсь понять, как добавить новый Team
. Я вставляю название и город на странице jsp
, а также я должен выбрать, к какой конференции принадлежит эта команда. Но когда я нажимаю кнопку add
, я получаю
There was an unexpected error (type=Internal Server Error, status=500).
No message available
Что я делаю не так? Я считаю, что что-то с selecting
частью на jsp
странице. И я на 100% уверен, что что-то упустил в своем классе Controller
. Каким-то образом я должен сохранить новую команду в своей БД, а в столбце Conference
также должно быть указано, что она содержит эту новую команду.
Я был бы очень признателен, ребята, если бы вы показали мне, как выкопать.