hibernate merge的问题,创建多条实例对象不生效

业务背景:

  • 前端传回一个bean对象,某个字段存有多个公司名称,并被逗号分隔开,后端处理成字符串数组,需要按照单个公司名称创建一条数据,
  • 某个字段A多选,列表生成多条数据,按照A进行单个创建
  • 需要配合detach和save使用,生成的新对象必须考虑hashcode不同(地址)
  • 解决 ↓
		for (int j = 0; j < auditUnitNames.length; j++) {
      			String auditUnitIdone = auditUnitIds[j];
      			String auditUnitNameone = auditUnitNames[j];
      			String materialistId = materialist.getId();
      			MaterialList ml = new MaterialList();
   				materialist.setAuditUnitId(auditUnitIdone);
       			materialist.setAuditUnitName(auditUnitNameone);
       			/**    注意此处start   */
       			// 此处是防止对象指向地址,把老对象里的值赋值给新对象
      			ml = changeEntity(materialist,ml);
      			/**    注意此处end  */
      			if(materialistId != null && !materialistId.equals("")){
      				commonDao.merge(materialist);
      			} else {
      			/**    注意此处start   */
      				commonDao.detach(ml);
      				commonDao.save(ml);
      				/**    注意此处end  */
      			}
      			materialist.setId(null);
     			}


		private MaterialList changeEntity(MaterialList old, MaterialList young) {
		    	young.setId(old.getAuditId());
				.....
				.....
				.....
		    	return young;
		    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值