当尝试使用 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' 不能为空的主要内容,如果未能解决你的问题,请参考以下文章