Java SpringWebMVC Post请求多对象
我有一个插入对象的方法。但此对象与另一个对象映射为一对多Java SpringWebMVC Post请求多对象,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有一个插入对象的方法。但此对象与另一个对象映射为一对多 @Entity public class FutureMessage { @Id @GeneratedValue(strategy=GenerationType.AUTO) private int id; private String message; @ManyToOne private User user; public int getId() { return
@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对象已映射到用户对象,但post请求存在问题
{
"message":"qwerasdf",
"user":{"id":15,"username":"XXX"}
}
此请求返回200,但在数据库中XXX不是id 15的正确用户名。
同时,如果此请求中不存在用户,它也会返回200(确定)。我的问题是,我不想发送用户id。我只想发送消息和用户名。(FutureMessage对象中有两个以上的属性)
@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对象和用户名作为ResponseBy发送。这是我的问题,不返回404或其他任何内容 Spring具有名为
ResponseEntity
的参数化对象,您应该从控制器方法返回该对象。它允许您根据请求以编程方式发送不同的HTTP响应。看看这个例子,当请求不正确时返回400响应,在您的情况下,用户
为空
至于用户
XXX
和id15
之间的不匹配,我不完全理解您的问题是什么。听起来你只是想发送消息和用户名?如果是这种情况,那么您的存储库需要足够智能来检查用户名,用户名最好是唯一的,否则会发生冲突。Spring已将名为ResponseEntity的对象参数化,您应该从控制器方法返回该对象。它允许您根据请求以编程方式发送不同的HTTP响应。看看这个例子,当请求不正确时返回400响应,在您的情况下,用户
为空
至于用户XXX
和id15
之间的不匹配,我不完全理解您的问题是什么。听起来你只是想发送消息和用户名?如果是这种情况,您的存储库需要足够智能,以检查用户名,用户名最好是唯一的,否则您将遇到冲突。对您的第一个问题做出响应。即使您返回null,也将是成功(状态代码-200)http请求。如果在发现逻辑返回null时特别希望将请求作为坏请求发送,则返回
return new ResponseEntity<String>(HttpStatus.BAD_REQUEST);
返回新的响应属性(HttpStatus.BAD_请求);
第二,当您不想发送用户id时。请确保您已在模型(消息、用户)之间配置了正确的关系,并且已将用户id的生成类型放置到任何id生成策略中,例如自动递增,以响应您的第一个问题。即使您返回null,也将是成功(状态代码-200)http请求。如果在发现逻辑返回null时特别希望将请求作为坏请求发送,则返回
return new ResponseEntity<String>(HttpStatus.BAD_REQUEST);
返回新的响应属性(HttpStatus.BAD_请求);
第二,当您不想发送用户id时。请确保您已在模型(消息、用户)之间配置了正确的关系,并且已将用户id的生成类型放置到任何id生成策略(如自动增量)中