当尝试使用 JPA 将数据插入 MySQL 数据库时,我被抛出异常:列 'billing_address' 不能为空

Posted

技术标签:

【中文标题】当尝试使用 JPA 将数据插入 MySQL 数据库时,我被抛出异常:列 \'billing_address\' 不能为空【英文标题】:When trying to use JPA to insert data into a MySQL Database, i am thrown the exception: Column 'billing_address' cannot be null当尝试使用 JPA 将数据插入 MySQL 数据库时,我被抛出异常:列 'billing_address' 不能为空 【发布时间】:2021-10-05 19:04:13 【问题描述】:

正如标题所说,当尝试使用 JPA 使用 @PostMapping 注释在我的测试数据库中创建“客户”时,我得到了异常:

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement] with root cause

java.sql.SQLIntegrityConstraintViolationException: Column 'billing_address' cannot be null

我尝试使用邮递员传入 JSON 正文,以便在数据库中创建一些条目,但无论我做出什么更改,都会不断收到此错误。

这是我的存储库的类实现

CustomerController.java

这是我的存储库界面。

CustomerRepository.java

最后这是我的客户实体

Customer.java

如果有人能指出如何解决此错误的正确方向,我将不胜感激。这是我尝试开发的第一个 API,我在这个问题上停留了太久。如果有人想自己挖掘代码,下面链接是我的 github。

https://github.com/Nicboard77/rentalService

谢谢!

【问题讨论】:

请将您的代码发布为文本,而不是图像。请使用调试器单步执行您的代码并检查 billing_address 的值。 试试@Column(nullable=true) 【参考方案1】:

你的数据库呢?您是在使用现有的,还是由 hibernate 使用您的 JPA 设置生成/处理的?

您应该检查该列的相关 DDL 表,因为看起来数据库表与您的实体映射“不同”。

【讨论】:

就是这样!我没有意识到我的 application.yml 中的 ddl-auto 设置为 none,而不是 update,并且在数据库和 java 认为的数据库中存在差异。谢谢!

以上是关于当尝试使用 JPA 将数据插入 MySQL 数据库时,我被抛出异常:列 'billing_address' 不能为空的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring Boot JPA 在数据库中插入多行

如何使用 JPA Query 将数据插入数据库?

使用 jpa 将数据插入到 2 个连接表中

数据在数据库 jpa/hibernate 中插入两次

JPA SQL Server 批量插入

从 sql 文件或使用 csv 文件将数据插入 mysql