首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >错误: java.lang.IllegalArgumentException:给定的id不能为空!- Spring,Mysql

错误: java.lang.IllegalArgumentException:给定的id不能为空!- Spring,Mysql
EN

Stack Overflow用户
提问于 2020-08-15 13:47:53
回答 1查看 1.9K关注 0票数 2

当客户端将数据插入sample_category表时,我得到了这个错误。这是我的控制器方法。

代码语言:javascript
代码运行次数:0
运行
复制
@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);

    }

这是模型类。

代码语言:javascript
代码运行次数:0
运行
复制
@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;

// Getters和setter

这是客户端的请求。

代码语言:javascript
代码运行次数:0
运行
复制
{
    "id" : "1",
    "title" : "Test Title",
    "user": {
        "user" : 7
    },
    "category": {
        "category" : 1
    },
    "description" : "test description",
    "quantity" : "2"
    
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-15 14:05:41

在您的JSON中,您不是在id节点中发送id。这就是为什么用户和类别对象的id是空的。

findById只接受非空id,否则抛出退出(参考)。JSON应该像

代码语言:javascript
代码运行次数:0
运行
复制
{
    ...
    "user": {
        "id" : 7
    },
    "category": {
        "id" : 1
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63426746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档