Здравствуйте. У меня проблема с регистрацией сущности, которую я сделал. Я использую Spring. Я сделал свою модель и все, но я получаю сообщение об ошибке, когда я пытаюсь зарегистрировать событие на своем сайте.вот изображение ошибки:
и вот изображение всех моих папок
Я в первую очередьбыли проблемы с соединениями OneToMany и ManyToOne, но я искал здесь и исправил их. Но теперь у меня нет ошибок в консоли.Только в браузере.Вот мой код в сущности Event
package com.example.app.entity;
import javax.persistence.*;
import java.util.List;
@Entity
@Table (name = "events")
public class Event {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String name;
@Column
@ElementCollection(targetClass=String.class)
private List<String> games;
@ManyToMany(fetch=FetchType.EAGER,cascade = {CascadeType.ALL})
@JoinTable(name = "event_users", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "event_id"))
private List<User> players;
private double latitude;
private double longitude;
private String description;
private String date;
private User owner;
private String gamesToParse;
private String usersToParse;
public String getGamesToParse() {
return gamesToParse;
}
public void setGamesToParse(String gamesToParse) {
this.gamesToParse = gamesToParse;
}
public String getUsersToParse() {
return usersToParse;
}
public void setUsersToParse(String usersToParse) {
this.usersToParse = usersToParse;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public User getOwner(){
return owner;
}
public void setOwner(User owner){
this.owner = owner;
}
public String getDescription(){
return description;
}
public void setDescription(String description){
this.description = description;
}
public double getLatitude(){
return latitude;
}
public void setLatitude(double latitude){
this.latitude = latitude;
}
public double getLongitude(){
return longitude;
}
public void setLongitude( double longitude){
this.longitude = longitude;
}
public String getName(){
return name;
}
public void setName( String name){
this.name = name;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public List<String> getGames() {
return games;
}
public void setGames(List<String> games) {
this.games = games;
}
public void setGames(String gamesData) {
String[] array = gamesData.split(",");
for (String g:array) {
this.games.add(g);
}
}
public List<User> getPlayers() {
return players;
}
public void setPlayers(List<User> players) {
this.players = players;
}
}
, а вот мой код в RegistrationEvent Model
package com.example.app.model;
import com.example.app.entity.User;
import javax.validation.constraints.Size;
import java.util.ArrayList;
import java.util.List;
public class RegistrationEvent {
@Size(min = 5, max = 100, message = "Event name too short")
private String name;
private List<String> games = new ArrayList<>();
private List<User> players = new ArrayList<>();
private double latitude;
private double longitude;
private String description;
private User owner;
private String date;
private String gamesToParse;
private String usersToParse;
public String getGamesToParse() {
return gamesToParse;
}
public void setGamesToParse(String gamesToParse) {
this.gamesToParse = gamesToParse;
}
public String getUsersToParse() {
return usersToParse;
}
public void setUsersToParse(String usersToParse) {
this.usersToParse = usersToParse;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public User getOwner() {
return owner;
}
public void setOwner(User owner) {
this.owner = owner;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public double getLongitude() {
return longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
public double getLatitude() {
return latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public List<User> getPlayers() {
return players;
}
public void setPlayers(List<User> players) {
this.players = players;
}
public List<String> getGames() {
return games;
}
public void setGames(String gamesData) {
String[] array = gamesData.split(",");
for (String g:array) {
this.games.add(g);
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Я думаю, что ошибка в том, что когда я передаю аргументы в моем html, что-то не получается, поэтому ятоже покажет мой html
<body id="eventspeoplebody">
<ul>
<li><a href="./BordFinder.html">Home</a></li>
<li><a class="active" href="./Events&People.html">Events & People</a></li>
<li><a href="./Trade.html">Trade</a></li>
<li><a href="#chat">Chat</a></li>
<li><a href="#account">Account</a></li>
<li><a href="./About.html">About us</a></li>
<li style="float:right"><a href="#signing">
<img src="./user.png" width="30" height="30" style="vertical-align: middle"> Sign out</a></li>
</ul>
<br>
<p>
<img class="logo" src="./logo.png" width="400" height="175">
<span class="heading">   Choose your game & find a team! </span>
</p>
<br>
<div align="center">
<p class="heading1" >Choose where will be your event on the map or enter the coordinates below</p>
</div>
<br>
<br>
<form method="post" th:object="${event}">
<div class="transbox4">
<p align="center" class ="specialText">
<span class="blue"> INFO </span>
</p>
<div align="center">
<div id="info" class ="specialText">
<span class="blue"> Event name*: </span><br>
<input type="text" class="input2" th:field="*{name}"><br>
<span class="blue"> Games at the event*: </span><br>
<input type="text" class="input2" th:field="*{gamesToParse}"><br>
<span class="blue"> Date*: </span><br>
<input type="text" class="input2" th:field="*{date}"><br>
<span class="blue"> Player emails*: </span><br>
<input type="text" class="input2" th:field="*{players}"><br>
<span class="blue"> latitude*: </span><br>
<input type="text" class="input2" th:field="*{latitude}"><br>
<span class="blue"> longitude*: </span><br>
<input type="text" class="input2" th:field="*{longitude}"><br>
<p class="smallInfo" align="center">fields with * must be filled!</p>
</div>
</div>
</div>
<br>
<p align="center"> <button type="submit" class="create button1"><b>Submit the Event</b></button> </p>
</form>
</body>
</html>
вот мой контроллер тоже
package com.example.app.Controllers;
import com.example.app.Service.EventService;
import com.example.app.model.RegistrationEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@Controller
public class EventsController {
@Autowired
private EventService eventService;
@GetMapping("/user/eventsAndPeople/registerEvent")
public String getRegisterPage(Model model, RegistrationEvent registrationEvent){
model.addAttribute("event", registrationEvent);
return "events/registerEvent";
}
@PostMapping("/user/eventsAndPeople/registerEvent")
public String registerEvent(@Valid @ModelAttribute RegistrationEvent registrationEvent){
this.eventService.register(registrationEvent);
return "events/registerEvent";
}
@RequestMapping(value = "/user/eventsAndPeople", method = RequestMethod.GET)
public String getEventsAndPeoplePage(){
return "home/eventsAndPeople";
}
}
Я использую Xampp для локального сервера и HeidiSQL, чтобы я мог отслеживать свою базу данных.Я очень смущен, что не так.Да, и кое-что, что я забыл, это моя реализация EventService:
import com.example.app.Repository.EventRepository;
import com.example.app.Repository.UserRepository;
import com.example.app.Service.EventService;
import com.example.app.entity.Event;
import com.example.app.model.RegistrationEvent;
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@Service
public class EventServiceImpl implements EventService {
@Autowired
private UserRepository userRepository;
@Autowired
private EventRepository eventRepository;
@Autowired
private ModelMapper modelMapper;
public EventServiceImpl() {
super();
}
@Override
public void register(RegistrationEvent registrationEvent) {
Authentication auth =
SecurityContextHolder.getContext().getAuthentication();
String name = auth.getName();
Event event = this.modelMapper.map(registrationEvent, Event.class);
event.setGames(registrationEvent.getGamesToParse());
event.setDescription(registrationEvent.getDescription());
event.setLatitude(registrationEvent.getLatitude());
event.setLongitude(registrationEvent.getLongitude());
event.setName(registrationEvent.getName());
event.setPlayers(registrationEvent.getPlayers());
event.setDate(registrationEvent.getDate());
event.setOwner(this.userRepository.findOneByUsername(name));
this.eventRepository.save(event);
}
}