gpt4 book ai didi

java - Spring Web MVC Post请求多个对象

转载 作者:太空宇宙 更新时间:2023-11-04 12:26:58 25 4
gpt4 key购买 nike

我有一个插入对象的方法。但是这个对象与另一个对象以一对多的方式映射。

@Entity
public class FutureMessage {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String message;
@ManyToOne
private User user;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}
}

此 FutureMessage 对象已映射到 User 对象,但发布请求存在问题。

{
"message":"qwerasdf",
"user":{"id":15,"username":"XXX"}
}

此请求返回 200,但在数据库 XXX 中,ID 15 的用户名不正确。同时如果本次请求中不存在user,也会返回200(OK)。
我的问题是,我不想发送用户 ID。我只想发送消息和用户名。(FutureMessage 对象中有超过 2 个属性)

@RequestMapping(path="message/new",method=RequestMethod.POST)
public FutureMessage newMessage(@RequestBody FutureMessage newMsg){// how to add user name here ?
FutureMessage msg = null;
if(newMsg==null)
return null;
if(newMsg.getUser()==null){
return null;
}
try{
msg = messageRepository.save(newMsg);
}catch(Exception ex){
ex.printStackTrace();
}

return msg;
}

编辑:我只想将 FutureMessage 对象和用户名作为 ResponseBody 发送。这是我的问题,不返回 404 或其他任何内容。

最佳答案

Spring 具有名为 ResponseEntity 的参数化对象,您应该从 Controller 方法返回该对象。它允许您根据请求以编程方式发送不同的 HTTP 响应。看看这个post例如,当请求错误时返回 400 响应,在您的情况下,当 User 为 null 时。

至于用户XXX和id 15不匹配,我不完全明白你的问题是什么。听起来您只想发送消息和用户名?如果是这种情况,您的存储库需要足够智能来检查用户名,并且用户名最好是唯一的,否则您会遇到冲突。

关于java - Spring Web MVC Post请求多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38277299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com