¿Por qué recibo un error de 'columna no puede ser nulo' durante mi post API cuando estoy pasando un valor de un formulario HTML

donalmcm:

Cuando trato de probarlo al ejecutar mi aplicación, navegar a la página admin.html. Cómo lleno un valor para un primer nombre, apellido y correo electrónico en el formulario. Al hacer clic con el botón de enviar, aparece un error de 'e-mail columna no puede ser nulo'. He excluido código como captadores, organismos, etc. contructors por razones de brevedad. Esta es mi página admin.html donde tengo una forma que utilizo para los valores Publicar en mi api donde se utilizan los valores para crear un objeto empleado

<form role="form" action="api/employees/create" method="post">
    <div class="form-group">
        <label for="firstName">First Name</label>
        <input type="text" class="form-control" id="firstName" placeholder="Enter first name">
    </div>
    <div class="form-group">
        <label for="lastName">Last Name</label>
        <input type="text" class="form-control" id="lastName" placeholder="Enter last name">
    </div>
    <div class="form-group">
        <label for="email">Email</label>
        <input type="text" class="form-control" id="email" placeholder="Enter email">
    </div>
    <button type="submit" class="btn btn-success btn-block">Create</button>
</form>

Este es mi método POST en clase EmployeeAPI.java donde yo manejo el puesto y crear un objeto con los valores pasados ​​por la forma y el trato de persistir este nuevo objeto

@POST
@Path("create")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.TEXT_HTML)
public Response createEmployee(@FormParam(value = "firstName") String firstName,
                               @FormParam(value = "lastName") String lastName,
                               @FormParam(value = "email") String email) {
    SessionFactory factory = HibernateUtil.getSessionFactory();
    Session session = factory.getCurrentSession();
    URI location;
    try{
        session.getTransaction().begin();

        Employee newEmployee = new Employee();
        newEmployee.setFirstName(firstName);
        newEmployee.setLastName(lastName);
        newEmployee.setEmail(email);

        session.persist(newEmployee);
        session.getTransaction().commit();
        session.close();

        location = new URI("http://localhost:8080/index.html");
        return Response.temporaryRedirect(location).build();
    } catch (Exception e) {
        session.getTransaction().rollback();
        e.printStackTrace();
    }
    return null;
}

Esta es mi clase del modelo Employee.java - Tengo un constructor para un empleado con un solo nombre, apellido y correo electrónico y uno para todos los valores.

@XmlRootElement
@Entity
public class Employee {

@Id
@GeneratedValue
private int id;

@Expose
@Column(nullable = false)
private String firstName;

@Expose
@Column(nullable = false)
private String lastName;

@Expose
@Column(nullable = false, unique = true)
private String email;

Este es el error que estoy viendo en mi lado del servidor

Hibernate: insert into Employee (availability_id, email, firstName, isAdmin, isManager, isMentee, isMentor, lastName, mentorDuration, topic_name, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2019-03-04 16:07:41 WARN  SqlExceptionHelper:129 - SQL Error: 1048, SQLState: 23000
2019-03-04 16:07:41 ERROR SqlExceptionHelper:131 - Column 'email' cannot be null
2019-03-04 16:07:41 INFO  AbstractBatchImpl:193 - HHH000010: On release of batch it still contained JDBC statements
2019-03-04 16:07:41 ERROR ExceptionMapperStandardImpl:39 - HHH000346: Error during managed flush [org.hibernate.exception.ConstraintViolationException: could not execute statement]
donalmcm:

Durante la depuración de la EmployeeAPI los valores venían en nulo desde el extremo delantero

Captura de pantalla de back-end durante la depuración

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=214884&siteId=1
Recomendado
Clasificación