在我开发过程中,遇到一对多关系,之间的关系用中间表维系,在接收前台传的数据时,不仅需要接收对象,还需要接收一个对象数组。

Subproject subproject
List<SubprojectMid> mid

  如果只是一个对象的话,后台直接接收就行了。

@RequestMapping("/addSubproject")
@ResponseBody
public Result addSubproject(HttpServletRequest request, HttpServletResponse response, Subproject subproject) 

  但是再加上一个集合的话就会变得麻烦起来。
  其实我们可以把这个集合放到实体类中,这样后台接收还是只用一个对象就可以了。

//存放多个子项目中间表数据 -- 一对多
private List<SubprojectMid> mid = new ArrayList<SubprojectMid>();

  为了防止新增和修改该实体类时这个集合进行干扰,可以在set、get方法上加注解。

@OneToMany
@JoinColumn(name = "id",insertable = false, updatable = false)
public List<SubprojectMid> getMid() {
return mid;
}
public void setMid(List<SubprojectMid> mid) {
	this.mid = mid;
}

  然后后台接收就行了。
  这里贴一下后台接收的格式:

@RequestMapping(value ="/addSubproject", produces = "application/json;charset=UTF-8")
@ResponseBody
public Result addSubproject(HttpServletRequest request, HttpServletResponse response, @RequestBody Subproject subproject)	

  不定义一下编码格式,后台接收不到数据;不加参数上的注解会报错。
  报这个:Cannot generate variable name for non-typed Collection parameter type
  这里贴一下postman发请求的格式:
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐