【问题标题】:PSQLException: ERROR: null value in column "idRoom" of relation "Bed" violates not-null constraintPSQLException:错误:关系“床”的“idRoom”列中的空值违反非空约束
【发布时间】:2021-08-18 04:56:48
【问题描述】:

我正在使用 spring boot 工作,并且我正在尝试向数据库(postgresql)添加床,但我遇到了这个错误

org.postgresql.util.PSQLException: ERROR: null value in column "idRoom" of relation "Bed" violates not-null constraint
  Detail: Failing row contains (34, sxxkskskso, null).

求床

package com.bezkoder.springjwt.pojo;

public class BedRequest {


    public Long idBed;


    public String bedNumber;

    public long roomId;


    public Long getIdBed() {
        return idBed;
    }

    public void setIdBed(Long idBed) {
        this.idBed = idBed;
    }

    public String getBedNumber() {
        return bedNumber;
    }

    public void setBedNumber(String bedNumber) {
        this.bedNumber = bedNumber;
    }

    public long getRoomId() {
        return roomId;
    }

    public void setRoomId(long roomId) {
        this.roomId = roomId;
    }
}

package com.bezkoder.springjwt.models;

import javax.persistence.*;

@Entity
public class Bed {




    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    private Long idBed;

    private String bedNumber ;


    @ManyToOne
            (fetch = FetchType.LAZY)
    @JoinColumn(nullable = false, name = "idRoom")
    private Room room;


    public Bed(Long idBed, String bedNumber) {
        this.idBed = idBed;
        this.bedNumber = bedNumber;

    }

    public Bed() {

    }




    public String getBedNumber() {
        return bedNumber;
    }

    public void setBedNumber(String bedNumber) {
        this.bedNumber = bedNumber;
    }
    public Long getIdBed() {
        return idBed;
    }

    public void setIdBed(Long idBed) {
        this.idBed = idBed;
    }

    public Room getRoom() {
        return room;
    }

    public void setRoom(Room room) {
        this.room = room;
    }
}

房间类

  @Override
    public Bed addBed(BedRequest bedRequest) {
        Room room = roomRepository.findByIdRoom(bedRequest.roomId);

        Bed bed = new Bed();

        bed.setBedNumber(bedRequest.bedNumber);
        bed.setRoom(room);
        return bedRepository.save(bed);
    }

BedController 类

   @PostMapping("/createBed")
    public Bed AddBed(@RequestBody BedRequest bedRequest){



        return bedService.addBed(bedRequest);
    }

调试结果

{
  "timestamp": "2021-05-30T18:01:33.500+0000",
  "status": 400,
  "error": "Bad Request",
  "message": "Required request body is missing: public com.bezkoder.springjwt.models.Bed com.bezkoder.springjwt.controllers.BedController.AddBed(com.bezkoder.springjwt.pojo.BedRequest)",
  "path": "/api/auth/bed/createBed"
}

我真的不明白这里发生了什么,如果有人能帮助我解决这个问题?我在互联网上寻找答案,但到目前为止没有任何效果。

【问题讨论】:

    标签: java postgresql spring-boot


    【解决方案1】:

    您的映射有误,请检查您的 Room 类并输入:

    @OneToMany
            (fetch = FetchType.LAZY, mappedBy = "room")
    private Set<Bed> beds;
    

    把它放在你的 serviceImpl 你可以通过 id 添加床:

     @Override
        public Bed addBed(BedRequest bedRequest) {
            Room room = roomRepository.findByIdRoom(bedRequest.idRoom);
    
            Bed bed = new Bed();
    
            bed.setBedNumber(bedRequest.bedNumber);
            bed.setRoom(room);
            return bedRepository.save(bed);
        }
    

    这在 BedController 中:

     @PostMapping("/createBed")
        public ResponseEntity<?> AddBed(@RequestBody BedRequest bedRequest){
    
            bedService.addBed(bedRequest);
            return ResponseEntity.ok(new MessageResponse("Bed registered successfully!"));
    
        }
    

    【讨论】:

      猜你喜欢
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-08
      • 2016-01-18
      相关资源
      最近更新 更多