错误:java.lang.IllegalArgumentException:给定的ID不能为null! -春季启动,Mysql

时间:2020-08-15 13:47:53

标签: mysql spring-boot

在客户端将数据插入到sample_category表中时出现此错误。 这是我的控制器方法。

@PostMapping("/request")
    public SampleRequest createRequest(@Valid @RequestBody SampleRequest sampleRequest) throws ResourceNotFoundException{

        User user = userRepository.findById(sampleRequest.getUser().getId())
                .orElseThrow(() -> new ResourceNotFoundException("User Not Found"));

        Category category = categoryRepository.findById(sampleRequest.getCategory().getId())
                .orElseThrow(()-> new ResourceNotFoundException("Category Not Found"));

        sampleRequest.setUser(user);
        sampleRequest.setCategory(category);

        return sampleRequestRepository.save(sampleRequest);

    }

这是Model类。

@Entity
@Table(name = "sample_requests")
public class SampleRequest extends DateAudit {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotNull
    private String title;


    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name = "user_id", nullable = false)
    @OnDelete(action = OnDeleteAction.CASCADE)
    private User user;

    @ManyToOne(fetch = FetchType.LAZY,optional = false)
    @JoinColumn(name = "category_id", nullable = false)
    @OnDelete(action = OnDeleteAction.CASCADE)
    private Category category;


    private String description;

    private Boolean approved;

    @NotNull
    private Long quantity;

// Getter和setters

这是客户端请求。

{
    "id" : "1",
    "title" : "Test Title",
    "user": {
        "user" : 7
    },
    "category": {
        "category" : 1
    },
    "description" : "test description",
    "quantity" : "2"
    
}

我需要添加新的样品请求。

1 个答案:

答案 0 :(得分:0)

在您的JSON中,您没有在id节点中发送id。这就是用户和类别对象的id为空的原因。

并且findById仅接受不为null的id,否则将抛出执行(Ref)。 JSON应该像

{
    ...
    "user": {
        "id" : 7
    },
    "category": {
        "id" : 1
    }
}