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

Я обновляю некоторые значения через этот класс, значения createBy и lastModifiedBy обновлять не обязательно. Итак, я не передаю эти значения от почтальона. Он принимает столбец lastModifiedBy, но показывает исключение sql, когда я не передаю значение createBy. Почему это происходит?

public class SubTeamMembersUpdateRequestDTO {

    private Long id;
    private Long subTeamId;
    private Long userId;
    private Integer target;
    private Date startDate;
    private Date endDate;
    private String memberType;
    private boolean isActive;

    private String createdBy;
    private String lastModifiedBy;
}

Консоль выглядит следующим образом:

в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation. java: 186) ~ [spring-aop-5.1.9.RELEASE.jar: 5.1.9.RELEASE] в org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke (PersistenceExceptionTranslationInterceptor. java: 139) ~ [spring-tx-5.1.9 .RELEASE.jar: 5.1.9.RELEASE] ... 111 общих кадров опущено. Причина: java. sql .SQLIntegrityConstraintViolationException: Столбец 'create_by' не может быть нулевым в com. mysql .cj.jdb c .exceptions.SQLError.createSQLException (SQLError. java: 117) ~ [mysql -connector- java -8.0.17.jar: 8.0.17] в com. mysql .cj.jdb c .exceptions.SQLError.createSQLException (SQLError. java: 97) ~ [mysql -connector- java -8.0.17.jar: 8.0.17] в com. mysql .cj.jdb c .exceptions.SQLExceptionsMapping.translateException (SQLExceptionsMapping. java: 122) ~ [mysql -connector- java -8.0.17.jar: 8.0.17] в com. mysql .cj .jdb c .ClientPreparedStatement.executeInternal (ClientPreparedStatement. java: 953) ~ [mysql -connector- java -8.0.17.jar: 8.0.17] в com. mysql .cj.jdb c .ClientPreparedStatement.executeUpdateInternal (ClientPreparedStatement. java: 1092) ~ [mysql -connector- java -8.0.17.jar: 8.0.17] в com. mysql .cj.jdb c .ClientPreparedStatement.executeUpdateInternal (ClientPreparedStatement. java: 1040) ~ [mysql -connector- java -8.0.17.jar: 8.0.17] в com. mysql .cj.jdb c. ClientPreparedStatement.executeLargeUpdate (ClientPreparedStatement. java: 1340) ~ [mysql -connector- java -8.0.17.jar: 8.0.17] в com. mysql .cj.jdb c .ClientPreparedStatement. executeUpdate (ClientPreparedStatement. java: 1025) ~ [mysql -connector- java -8.0.17.jar: 8.0.17] в com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate (ProxyPreparedStatement. java : 61) ~ [HikariCP-3.2.0.jar: na] на com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate (HikariProxyPreparedStatement. java) ~ [HikariCP-3.2.0.jar: na] в организации .hibernate.engine.jdb c .internal.ResultSetReturnImpl.executeUpdate (ResultSetReturnImpl. java: 175) ~ [hibernate-core-5.3.10.Final.jar: 5.3.10.Final] ... 160 общих кадров опущено

1 Ответ

0 голосов
/ 09 февраля 2020

Как я понимаю, поле "createBy" уже не равно нулю в БД (так как это запрос на обновление). Я полагаю, вам следует просмотреть способ сохранения в БД. Похоже, вы пытаетесь установить значение null в поле «createBy» при обновлении строки и mysql выдает исключение. Может быть, вы установили значение null (просто скопируйте из SubTeamMembersUpdateRequestDTO.createBy) в модель БД и сохранили модель?

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