jpa 跨表_spring jpa如何进行多表查询

最近做的一个需求,前端传入一个对象,里面的字段涉及两个表的字段,后台需要相应进行插入到数据库的表中,如下,前端传入的数据

formObj:{

phone:'',

id:0,

projectName:'',//项目名称

matchType:'创新组',// 参赛组别 创新组 创业组

matchArea:'华南赛区',// 参赛赛区

industryField:'',// 行业领域

patentAmount:'',// 专利数

brandAmount:'',// 商标数

copyrightAmount:'',// 版权数

isTransfram:0,// 是否有产学研合作/成果转化意向 1:是 0:否

registDate:'',// 企业注册时间

isHighTech:0,// 是否高新企业(培育)/小巨人企业 1:是 0:否F

isHaveBonus:0,// 是否获得投资资金 1:是 0:否

isNeedFinance:0,// 是否需要融资 1:是 0:否

takePartDesc:'',// 参评人简介

projectProfile:'',// 项目概要

businessPlan:'',// 商业计划书:附件形式

otherMaterials:'',// 其他证明材料:附件形式

projectSort:'第六届',// 第几届

userName:'',//项目负责人

status:0, //状态 1:报名 2:草稿

msg:'',

attch:'',

awardCaseList:[],

applyUserList:[],//项目报名人

},

其中awardCaseList:[],applyUserList:[]传入的数据需要保存其他两张表中。后台的代码如下

@RequestMapping(value = "/apply", method = RequestMethod.POST)

@ResponseBody

public CommonRespon apply(@RequestBody ApplyProjectBean applyProject, HttpServletRequest request) {

CommonRespon respon = new CommonRespon();

ApplyProject project = ApplyProjectBean.setApplyProject(applyProject);

try {

ShiroUser shiroUser = getCurrentUser();

if (shiroUser == null) {

respon.setMsg(Const.CODE_NO_LOGIN_STR);

respon.setCode(Const.CODE_NO_LOGIN);

return respon;

}

if (applyProject.getId() == null || applyProject.getId() == 0) {

// 不存在该项目

project.setCreateUserId(shiroUser.getId());

project.setCreateTime(new Date());

} else {

// 已经存在该项目

ApplyProject applyOld = goldenService.findApplyProject(applyProject.getId());

project.setCreateUserId(applyOld.getCreateUserId());

project.setCreateTime(applyOld.getCreateTime());

project.setId(applyOld.getId());

// 先删除该项目的相关人

goldenService.delApplyList(applyProject.getId());

// 删除获奖

goldenService.deleteAwardList(applyProject.getId());

}

project.setUpdateTime(new Date());// 更新时间

// 项目报名人

List applyUserList = applyProject.getApplyUserList();

if (applyUserList != null) {

project.setUserName(applyUserList.get(0).getUserName());//项目负责人

for (ApplyUserBean u : applyUserList) {

if (u.getIsContactMan() == 1) {

project.setPhone(u.getMobilePhone());//联系人号码

}

}

}

// 保存项目

ApplyProject projects = goldenService.save(project);

if (applyUserList != null) {

goldenService.saveApplyList(ApplyProjectBean.setApplyUserList(applyUserList, projects));// 保存项目人

}

// 获奖情况

List awards = applyProject.getAwardCaseList();

if (awards != null) {

goldenService.saveAwardList(ApplyProjectBean.setAwardCaseList(awards, projects));

}

respon.setData(project.getId());

respon.setMsg(Const.CODE_SUCCESS_STR);

respon.setCode(Const.CODE_SUCCESS);

} catch (Exception e) {

e.printStackTrace();

respon.setMsg(Const.CODE_ERROR_STR);

respon.setCode(Const.CODE_ERROR);

}

return respon;

}

需要用@RequestBody来注释 ApplyProjectBean applyProject(传入的参数),而ApplyProjectBean 对象如下

private List awardCaseList;

private List applyUserList;

private String msg;

public List getAwardCaseList() {

return awardCaseList;

}

public void setAwardCaseList(List awardCaseList) {

this.awardCaseList = awardCaseList;

}

public List getApplyUserList() {

return applyUserList;

}

public void setApplyUserList(List applyUserList) {

this.applyUserList = applyUserList;

}

public String getMsg() {

return msg;

}

public void setMsg(String msg) {

this.msg = msg;

}

SimpleFieldBean,ApplyUserBean这个属性代表相应表中的字段,可能有多条,就用List,这样就相当于把三个表的数据作为一个对象传入,对这个参数进行操作,就可以相应对对应表进行操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值