Ошибка настойчивости дат с jsf jpa eclipseLink ejb

Я стараюсь сохранять ранг дат и закрепляю год в таблице в MySQL, я скроллирую приложение и эта функционирует хорошо с другими подмостками, но сохраняли период, меня бросает ошибка:

Информация: ConstraintViolationImpl { interpolatedMessage ='no он может быть null', propertyPath=anio, rootBeanClass=class com.modelo. Период, messageTemplate = '{ javax.validation.constraints. NotNull.message }' }

Информация: ConstraintViolationImpl { interpolatedMessage ='no он может быть null', propertyPath=fIni, rootBeanClass=class com.modelo. Период, messageTemplate = '{ javax.validation.constraints. NotNull.message }' }

Информация: ConstraintViolationImpl { interpolatedMessage ='no он может быть null', propertyPath=fFin, rootBeanClass=class com.modelo. Период, messageTemplate = '{ javax.validation.constraints. NotNull.message }' }

Классы, что у меня есть звук:

Entity modelo:

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlRootElement;

@Entity
@Table(name = "periodo")
@XmlRootElement
@NamedQueries({
  @NamedQuery(name = "Periodo.findAll", query = "SELECT p FROM Periodo p"),
  @NamedQuery(name = "Periodo.findByIdPeriodo", query = "SELECT p FROM Periodo p WHERE p.idPeriodo = :idPeriodo"),
  @NamedQuery(name = "Periodo.findByAnio", query = "SELECT p FROM Periodo p WHERE p.anio = :anio"),
  @NamedQuery(name = "Periodo.findByFIni", query = "SELECT p FROM Periodo p WHERE p.fIni = :fIni"),
  @NamedQuery(name = "Periodo.findByFFin", query = "SELECT p FROM Periodo p WHERE p.fFin = :fFin")})
public class Periodo implements Serializable {

  private static final long serialVersionUID = 1L;
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Basic(optional = false)
  @Column(name = "id_periodo")
  private Integer idPeriodo;
  @Basic(optional = false)
  @NotNull
  @Column(name = "anio")
  private Date anio;
  @Basic(optional = false)
  @NotNull
  @Column(name = "f_ini")
  @Temporal(TemporalType.TIMESTAMP)
  private Date fIni;
  @Basic(optional = false)
  @NotNull
  @Column(name = "f_fin")
  @Temporal(TemporalType.TIMESTAMP)
  private Date fFin;


  public Periodo() {
  }

  public Periodo(Integer idPeriodo) {
    this.idPeriodo = idPeriodo;
  }

  public Periodo(Integer idPeriodo, Date anio, Date fIni, Date fFin) {
    this.idPeriodo = idPeriodo;
    this.anio = anio;
    this.fIni = fIni;
    this.fFin = fFin;
  }

С Ваш getter и setter

abstract facade с JPA затмил Соединение.

public abstract class AbstractFacade<T> {

  private Class<T> entityClass;

  public AbstractFacade(Class<T> entityClass) {
    this.entityClass = entityClass;
  }

  protected abstract EntityManager getEntityManager();

  public void create(T entity) {
        try {
        getEntityManager().persist(entity);
    } catch (ConstraintViolationException e) {
        // Aqui tira los errores de constraint
        for (ConstraintViolation actual : e.getConstraintViolations()) {
            System.out.println(actual.toString());
        }
    }
  }

PeriodoFacade:

import com.mintic.siped.dao.AbstractFacade;
import com.mintic.siped.modelo.Periodo;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless
public class PeriodoFacade extends AbstractFacade<Periodo> implements PeriodoFacadeLocal {

  @PersistenceContext(unitName = "SipedPU")
  private EntityManager em;

  @Override
  protected EntityManager getEntityManager() {
    return em;
  }

  public PeriodoFacade() {
    super(Periodo.class);
  }

ManagedBean для периода:

import com.mintic.siped.dao.PeriodoFacadeLocal;
import com.mintic.siped.modelo.Periodo;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;

@Named(value = "periodoControl")
@SessionScoped
public class PeriodoControl implements Serializable {

  @EJB
  private PeriodoFacadeLocal periodoEjb;
  @Inject
  private Periodo periodo;
  private List<Periodo> listaPeriodos;

  /**
   * Creates a new instance of periodoControl
   */
  public PeriodoControl() {
  }

  @PostConstruct
  public void init() {
    listaPeriodos = periodoEjb.findAll();
  }

  public Periodo getPeriodo() {
    return periodo;
  }

  public void setPeriodo(Periodo periodo) {
    this.periodo = periodo;
  }

  public List<Periodo> getListaPeriodos() {
    return listaPeriodos;
  }

  public void setListaPeriodos(List<Periodo> listaPeriodos) {
    this.listaPeriodos = listaPeriodos;
  }

  public void registrar() {
    try {
      periodoEjb.create(periodo);
      FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Aviso", "Periodo añadido Exitosamente"));
    } catch (Exception e) {
      FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Error", "Ha ocurrido un problema guardando el nuevo registro"));
    }
  }

И вид из-за facelets с primefaces:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                xmlns:h="http://xmlns.jcp.org/jsf/html"
                xmlns:f="http://xmlns.jcp.org/jsf/core"
                xmlns:p="http://primefaces.org/ui"
                template="./../templates/Principal.xhtml">

  <ui:define name="content">
    <h:form id="frmPeriodo">
      <h1><h:outputText value="Añadir periodos para la evaluación" style="color: #427589; text-align: center"/></h1>
      <br/>
      <p:fieldset legend="Módulo Periodos">
        <p:panelGrid id="pgFrmPeriodo" columns="3">
          <p:outputLabel value="Año a evaluar:" for="anio" />
          <p:inputText id="anio" value="#{periodoControl.periodo.anio}" required="true" requiredMessage="El Año es requerido.">
            <f:convertDateTime pattern="dd-MM-yyyy" for="anio" timeZone="America/Bogota"/>
          </p:inputText>
          <p:message for="anio"/>

          <p:outputLabel value="Fecha de inicio o Apertura:" for="FIni" />
          <p:calendar id="FIni" value="#{periodoControl.periodo.FIni}" locale="es" 
                      navigator="true" pattern="dd-MM-yyyy" required="true" 
                      requiredMessage="Se necesita una fecha de inicio." timeZone="America/Bogota" />
          <p:message for="FIni"/>

          <p:outputLabel value="Fecha de cierre o Fin:" for="FFin" />
          <p:calendar id="FFin" value="#{periodoControl.periodo.FFin}" locale="es" 
                      navigator="true" pattern="dd-MM-yyyy" required="true" 
                      requiredMessage="Se necesita una fecha de finalización." timeZone="America/Bogota" />
          <p:message for="FFin"/>

        </p:panelGrid>
        <p:separator/>
        <p:commandButton id="Guardar" icon="ui-icon-check" value="Guardar" actionListener="#{periodoControl.registrar()}" 
                         update="frmPeriodo"/>
        <p:commandButton id="Cancelar" icon="ui-icon-cancel" value="Cancelar"/>

        <p:separator/>
        <p:dataTable value="#{periodoControl.listaPeriodos}" var="per">
          <p:column headerText="Nombre">
            <h:outputText value="#{per.anio}"/>
          </p:column>
          <p:column headerText="Cód. Dane">
            <h:outputText value="#{per.FIni}"/>
          </p:column>
          <p:column headerText="Zona">
            <h:outputText value="#{per.FFin}"/>
          </p:column>
          <p:column headerText="Acciones">
            <p:commandButton value="Editar" actionListener="#{periodoControl.editar()}" />
            <p:commandButton value="Eliminar" actionListener="#{periodoControl.eliminar()}" />
          </p:column>
        </p:dataTable>
      </p:fieldset>
    </h:form>

  </ui:define>

</ui:composition>

Правда я манипулировал этой же самой структурой для других подмостков, но с этой это единственная, с которой меня представляет ошибка и меня не сохраняет информация.

Я благодарен за любую помощь смогите предлагать меня.

0
задан 27.02.2019, 08:55
1 ответ

С моей точки зрения ошибка, Если он с прописными буквами, но не в id такой <p:calendar id="FIni" ... как ты предлагает @abrahamhs, а в value, этой стоимости, которая действительно сохраняет компонент как только user работает с. id одинокий один пойдите на компонент в коде html, что производится, и не имеет ничего общего с данными, которыми манипулирует компонент.

Ты помещаешь value="#{periodoControl.periodo.FIni}" value="#{periodoControl.periodo.FFin}

в то время как код deberГ, - чтобы быть:

value="#{periodoControl.periodo.fIni}" value="#{periodoControl.periodo.fFin}

как ты заявляешь в ней @Entity.

0
ответ дан 19.11.2019, 22:48

Теги

Похожие вопросы