当前位置: 首页 > 知识库问答 >
问题:

无法执行语句;SQL[n/a];约束[null];嵌套的异常是org。冬眠例外ConstraintViolationException:

卫和洽
2023-03-14

我正在通过这个类更新一些值,createdBy和lastModifiedBy的值不是必须更新的。所以,我不是从邮递员那里传递这些值。它接受lastModifiedBy列,但当我不传递createdBy值时,它会显示sql异常。为什么会这样?

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。框架反射方法调用。继续(ReflectiveMethodInvocation.java:186)~[spring-aop-5.1.9.RELEASE.jar:5.1.9.RELEASE]访问org。springframework。刀。支持PersistenceExceptionTranslationInterceptor。调用(PersistenceExceptionTranslationInterceptor.java:139)~[spring-tx-5.1.9.RELEASE.jar:5.1.9.RELEASE]。。。111由于以下原因而忽略了公共帧:java。sql。SQLIntegrityConstraintViolationException:列“创建人”在com上不能为空。mysql。希杰。jdbc。例外。SQLError。com上的createSQLException(SQLError.java:117)~[mysql-connector-java-8.0.17.jar:8.0.17]。mysql。希杰。jdbc。例外。SQLError。com上的createSQLException(SQLError.java:97)~[mysql-connector-java-8.0.17.jar:8.0.17]。mysql。希杰。jdbc。例外。SQLExceptionsMapping。translateException(sqlexceptionMapping.java:122)~[mysql-connector-java-8.0.17.jar:8.0.17]位于com.mysql。希杰。jdbc。客户准备好了声明。executeInternal(ClientPreparedStatement.java:953)~[mysql-connector-java-8.0.17.jar:8.0.17]位于com.mysql。希杰。jdbc。客户准备好了声明。executeUpdateInternal(ClientPreparedStatement.java:1092)~[mysql-connector-java-8.0.17.jar:8.0.17]位于com.mysql。希杰。jdbc。客户准备好了声明。executeUpdateInternal(ClientPreparedStatement.java:1040)~[mysql-connector-java-8.0.17.jar:8.0.17]位于com.mysql。希杰。jdbc。客户准备好了声明。com上的executeLargeUpdate(ClientPreparedStatement.java:1340)~[mysql-connector-java-8.0.17.jar:8.0.17]。mysql。希杰。jdbc。客户准备好了声明。com上的executeUpdate(ClientPreparedStatement.java:1025)~[mysql-connector-java-8.0.17.jar:8.0.17]。扎克瑟。希卡里。水塘ProxyPreparedStatement。executeUpdate(ProxyPreparedStatement.java:61)~[HikariCP-3.2.0.jar:na]。扎克瑟。希卡里。水塘HikariProxyPrepared声明。executeUpdate(HikariProxyPreparedStatement.java)~[HikariCP-3.2.0.jar:na]位于org。冬眠发动机jdbc。内部的结果TretReturnImpl。executeUpdate(ResultSetReturnImpl.java:175)~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]。。。省略160个公共框架

共有1个答案

程智明
2023-03-14

据我所知,“createdBy”字段在数据库中已经不是空的(因为这是一个更新请求)。我想你应该通过保存方法来查看数据库。看起来你尝试在更新行时将null设置为“createdBy”字段,而mysql抛出一个异常。也许你设置null(只是从SubTeamMembersUpdateRequest estDTO. createBy复制)到DB模型并保存模型?

 类似资料: