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

Spring Boot:数据库将值保存为空

袁和通
2023-03-14

我对春靴还不熟悉。

我正在使用H2、JPA、Lombok、Spring Web和DevTools构建Rest API。

我遇到了以下问题:在数据库中插入一个值时,它会收到一个id(好的,很好),而在保存另一个数据时,它会将其保存为null。

我的申请。属性:

spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.generate-unique-name=false

我的控制器:

package com.b.c.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import com.b.c.model.Receita;
import com.b.c.repository.ReceitaRepository;
import lombok.AllArgsConstructor;

@RestController
@AllArgsConstructor 
public class ReceitaController {
    
    @Autowired
    private ReceitaRepository receitaRepository;

    @GetMapping("/status")
    public List<Receita> getStatus() {
        return receitaRepository.findAll();
    }
    
    @PostMapping("/cadastrar")
    public Receita setUser(@RequestBody Receita receita) {
        return receitaRepository.save(receita);
    }

}

我的模型:

package com.b.c.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
@Table(name = "receitas")
public class Receita {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(name="nome")
    private String nome;

}

我的存储库:

package com.b.c.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.b.c.model.Receita;

@Repository
public interface ReceitaRepository extends JpaRepository<Receita, Long>{

}

使用json中的有效负载发出post请求时,它会生成id并将“nome”的值保存为null。

我手动将测试值输入数据库,并在执行“ReceitRepository.findAll();”时输入即使手动将值输入数据库,它也会返回没有值的“{}”。

因此,当通过post方法插入值时,它被保存为null,当从数据库中获取值以返回get时,它也显示为null,返回空大括号“{}”。

共有1个答案

夹谷衡
2023-03-14

在保存值之前,可以验证RequestBody。为此,可以使用@Valid注释和@RequestBody。它将告诉Spring在进行实际的方法调用之前先进行验证。如果验证失败,Spring将抛出MethodArgument NotValidException,默认情况下,它将返回400(错误请求)响应。在POST或PUT请求中,当我们传递JSON负载时,Spring会自动将其转换为Java对象,现在它可以验证生成的对象。还可以使用适当的验证注释标记模型。

@PostMapping("/cadastrar")
public Receita setUser(@Valid @RequestBody Receita receita) {
    return receitaRepository.save(receita);
}
 类似资料:
  • 为什么我的值不能进入数据库? 如果需要更多的代码,请告诉我。 警告: 查询连接中的异常。php第713行:SQLSTATE[23000]:完整性约束冲突:1048列“name”不能为空(SQL:insert-into(,,,,)值(,,2016-06-19 21:44:05,2016-06-19 21:44:05)) 控制器: HTML页面:

  • 当我启动这个代码时,你通常认为它会在文本文件中输入一个100,但我不知道为什么它会像字符一样输入一个“d”。有人知道如何修复吗?一个方法应该输入一个数据,一个应该输入那个数据,一个应该保存那个数据。

  • 问题内容: 我想保存额外的信息,然后再将总订单发送到Paypal。对于每一项,我都在MySQL数据库中创建了一个要存储的列。现在,我正在考虑将其保存为一个数组,以后可以在创建PHP页面时阅读。多余的字段取自输入表单字段。 通过使用数组,可以确保不混淆信息吗? 问题答案: 您可以使用/ 存储数组。使用该解决方案,它们不能轻易地从其他编程语言中使用,因此您可以考虑使用/ 代替(它为您提供了广泛支持的格

  • 问题内容: 我有一个具有表的应用程序,当您单击表中的项目时,它会使用其数据(FieldGroup)填充一组文本字段,然后您可以选择保存更改, 我想知道如何保存更改用户对我的postgres数据库进行的更改 。我正在为此应用程序使用vaadin和hibernate模式。到目前为止,我已经尝试做 我努力了 而且我也尝试过 最后两个给我以下错误 问题答案: 我已经弄清楚了如何对数据库进行更改,下面是一些

  • 我正在为我的大学创建一个Android项目,在那里我想用移动指纹传感器制作像指纹考勤系统这样的东西,所以实际上我想把生物特征数据保存到数据库中,以便在考勤时进一步参考。我想将指纹数据保存到移动指纹传感器SQL数据库中。

  • 问题内容: 我的客户在php + mysql中创建了一个脚本,该脚本将图像直接保存在数据库中,并且每个图像都有这样的url:www.example.com/image.php?id=421 您认为这是一个非常错误的解决方案?我应该重建所有站点吗? 每天大约有1000次访问,数据库中大约有600张图像。 问题答案: 图像文件是文件,除非有充分的理由将它们存储在数据库中,否则它们应属于文件系统,在文件