javax.validation.ConstraintViolationException: ограничения проверки бина, нарушенные при проверке перед обновлением - PullRequest
5 голосов
/ 23 мая 2011

У меня появляется досадное сообщение об ошибке при попытке вставить новый элемент в связи «многие ко многим» с использованием JPA 2.0, SpringMvc 3.0.

У меня есть таблица с состояниями и еще одна с персонами. Человек может быть связан со многими государствами, а государство - со многими людьми. В этом конкретном случае у меня есть listOfStates, а затем человек, и я хотел бы вставить эти элементы в мои отношения многие ко многим.

Отношения ManyToMany (в таблице STATE)

    //bi-directional many-to-many association to Appointment
    @ManyToMany(cascade=CascadeType.ALL)
    @JoinTable(
name="PERSON_STATE"
, joinColumns={
    @JoinColumn(name="PERSON_ID", nullable=false)
    }
, inverseJoinColumns={
    @JoinColumn(name="CODE_STATE", nullable=false)
    }
)

Код DAO, что я звоню с моего контроллера

try{    
    getEntityManager().getTransaction().begin();            
    getEntityManager().persist(myPerson);                       

    IStateDAO stateDAO = new StateDAO();

    for (int i=0; i<listOfStates.length; i++){
        State myState = stateDAO.findState(listOfStates[i]);
        if (myState != null){                   
            myState.getPersons().add(myPerson);
            getEntityManager().persist(myState);
        }
    }

    getEntityManager().getTransaction().commit();           
    getEntityManager().close();         

} catch (RuntimeException re) {
    getEntityManager().close();
    throw re;           
}

Самое смешное, что этот код работает нормально, когда я не вставляю данные с веб-страницы. Что я здесь не так делаю? У меня уже есть некоторые лица и состояния в БД.

Сообщение об ошибке полного стека:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.validation.ConstraintViolationException: Bean Validation constraint(s) violated while executing Automatic Bean Validation on callback event:'preUpdate'. Please refer to embedded ConstraintViolations for details.


javax.validation.ConstraintViolationException: Bean Validation constraint(s) violated while executing Automatic Bean Validation on callback event:'preUpdate'. Please refer to embedded ConstraintViolations for details.

Любой указатель был бы очень признателен. Заранее всем спасибо.

Ответы [ 2 ]

5 голосов
/ 24 мая 2011

вау! понял! Мне пришлось изменить режим проверки в моем файле persistence.xml с Auto на NONE , который в основном говорит приложению вообще не использовать проверку бина. Сообщения об ошибках исчезли, и мой DAO работает хорошо.

1 голос
/ 23 мая 2011

В исключениях указано, что используется JSR 303 Bean Validation , и Hibernate настроен (Persistence.xml) для проверки их перед обновлением чего-либо.

JSR 303 Bean Validation - это аннотации типа:

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