не может выполнить инструкцию; SQL [н / д]; ограничение [ноль]; вложенным исключением является org.hibernate.exception.ConstraintViolationException - PullRequest
0 голосов
/ 24 апреля 2020

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

  <form method="post" modelAttribute="personForm" action="person/addPerson">
  <div>
  <!-- <input type="hidden" path="personid"> -->
    <div class="row">
        <div class="col">
            <label for="inputFName" class="sr-only">First Name</label>
            <input type="text" id="firstname" path="firstname" class="form-control" placeholder="First Name" required autofocus> 
        </div>
        <div class="col">
            <label for="inputLName" class="sr-only">Last Name</label>
            <input type="text" id="lastname" path="lastname" class="form-control" placeholder="Last Name" required>  
        </div>
    </div>
    <br>
    <div class="row no-gutters">
        <label for="inputEmail" class="sr-only">Email address</label>
        <input type="email" id="email" path="email" class="form-control" placeholder="Email address" required>
    </div>
    <br>
    <div class="row">
        <div class="col">
            <label for="inputPassword" class="sr-only">Password</label>
            <input type="password" id="password" path="password" class="form-control" placeholder="Password" required>
        </div>
        <div class="col">
            <label for="inputRepeatPassword" class="sr-only">Repeat Password</label>
            <input type="password" id="repeatpassword" path="repeatpassword" class="form-control" placeholder="Repeat Password" required> 
        </div>
    </div>
  </div>
  <br>
    <button class="btn btn-lg btn-primary btn-block" type="submit">Register</button>
  </form>

Вот класс модели Person.

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "person")
public class Person {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "personid")
    private int personid;
    @Column(name = "firstname")
    private String firstname;
    @Column(name = "lastname")
    private String lastname;
    @Column(name = "phone", nullable = true)
    private String phone;
    @Column(name = "homeaddress", nullable = true)
    private String homeaddress;
    @Column(name = "email")
    private String email;
    @Column(name = "password", nullable = true)
    private String password;

    public int getPersonid() {
        return personid;
    }
    public void setPersonid(int personid) {
        this.personid = personid;
    }
    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 getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getHomeaddress() {
        return homeaddress;
    }
    public void setHomeaddress(String homeaddress) {
        this.homeaddress = homeaddress;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}

Структура таблицы person выглядит следующим образом.

enter image description here

Это мой класс PersonController.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.travelx.travelx.model.Person;
import com.travelx.travelx.services.PersonService;

@Controller
@RequestMapping(value = "/person")
public class PersonController {

    @Autowired
    PersonService personService;

     @RequestMapping(value="/addPerson", method=RequestMethod.POST)
     public ModelAndView add(@ModelAttribute("personForm") Person person) { 
      personService.addPerson(person);
      return new ModelAndView("redirect:/login");
     }

}

А вот Класс PersonServiceImplementation.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.travelx.travelx.model.Person;
import com.travelx.travelx.repositary.PersonRepositary;

@Service
@Transactional
public class PersonServiceImplementation implements PersonService{

    @Autowired
    PersonRepositary personRepositary;

    @Override
    public void addPerson(Person person) {
        personRepositary.save(person);
    }

}

Когда я запускаю это веб-приложение, оно прекрасно работает до такой степени, что я могу ввести данные в мою форму. Когда я нажимаю кнопку отправки, браузер выдает ошибку:

не может выполнить инструкцию; SQL [н / д]; ограничение [ноль]; Вложенное исключение - org.hibernate.exception.ConstraintViolationException

В моем приложении Spring появляется сообщение об ошибке:

Hibernate: вставить в личность (электронная почта, имя, домашний адрес , фамилия, пароль, телефон) значения (?,?,?,?,?,?)

2020-04-24 10: 59: 52.902 WARN 2052 --- [nio -8080-exe c -3] ohengine.jdb c .spi.SqlExceptionHelper: SQL Ошибка: 1048, SQLState: 23000

2020-04-24 10: 59: 52.902 ОШИБКА 2052 --- [nio-8080-exe c -3] ohengine.jdb c .spi.SqlExceptionHelper: столбец 'email' не может быть пустым

2020-04-24 10: 59: 52.964 ОШИБКА 2052 --- [nio-8080-exe c -3] oa c. c. C. [. [. [/]. [DispatcherServlet ]: Servlet.service () для сервлета [dispatcherServlet] в контексте с путем [] вызвала исключение [Ошибка обработки запроса; вложенным исключением является org.springframework.dao.DataIntegrityViolationException: не удалось выполнить оператор; SQL [н / п]; ограничение [ноль]; вложенное исключение: org.hibernate.exception.ConstraintViolationException: не удалось выполнить оператор] с root причиной

java. sql .SQLIntegrityConstraintViolationException: столбец «email» не может быть пустым

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...