以下代码执行后,报错,并且数据是成功插入数据库的。

@Override
	public int EdtStelesList(List<Steles> stelesList) {
		int row = 0;
        boolean isAdd = false; //数据的性质是一致的
		for (Steles tnsSteles : stelesList) {
			if (tnsSteles.getId().intValue() == 0) {
				tnsSteles.setId(null);
				tnsSteles.setCreatedate(LocalDateTime.now());
				tnsSteles.setSoftdel(0);
                isAdd = true;
			} else {
				tnsSteles.setModifydate(LocalDateTime.now());
				tnsSteles.setSoftdel(0);
			}
		}
		try {
			if (isAdd) {
				row = saveBatch(stelesList) ? 1 : 0;
			} else {
				row = updateBatchById(stelesList) ? 1 : 0;
			}
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}

		return row;
	}
数据表id: 自增。

 解决:

@Transactional(rollbackOn = RuntimeException.class)
	@Override
	public int EdtStelesList(List<Steles> stelesList) {
		int row = 0;
		for (Steles tnsSteles : stelesList) {
			if (tnsSteles.getId().intValue() == 0) {
				tnsSteles.setId(null);
				tnsSteles.setCreatedate(LocalDateTime.now());
				tnsSteles.setSoftdel(0);
				row = tnsStelesMapper.insert(tnsSteles);
			} else {
				tnsSteles.setModifydate(LocalDateTime.now());
				tnsSteles.setSoftdel(0);
				row = tnsStelesMapper.updateById(tnsSteles);
			}
		}
		return row;
	}

改成单条插入,并且开启事务。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐