用xls导入数据(报错) (上一篇博客)原因

因为使用xls导入数据的,这里有一串代码专门用来提取xls里面的数据

for (int cellNum = 0; cellNum <= row.getLastCellNum(); cellNum++) {
				HSSFCell hssfCell = row.getCell(cellNum);
				if (hssfCell == null) {
					break;
				}
				if(cellNum==0){
					unit.setName(hssfCell.getStringCellValue());
				}else if(cellNum==1){
					unit.setUnitCode(new DecimalFormat("#").format(hssfCell.getNumericCellValue()));   
				}else{
					if("教学单位".equals(hssfCell.getStringCellValue())){
						unit.setUnitType(UnitType.TEACHING_UNIT);
					}else if("科研机构".equals(hssfCell.getStringCellValue())){
						unit.setUnitType(UnitType.SCIENTIFIC_RESEARCH_INSTITUTION);
					}else if("党政机关".equals(hssfCell.getStringCellValue())){
						unit.setUnitType(UnitType.PARTY_GOVERNMENT_ORGANIZATIONS);
					}else if("直属单位".equals(hssfCell.getStringCellValue())){
						unit.setUnitType(UnitType.SUBORDINATE_UNIT);
					}else{
						unit.setUnitType(UnitType.SUBSIDIARY_UNIT);
					}
				}
				list.add(unit);
			}

第一行:row.getLastCellNum(),获取有多少列。

比如我这有三列,就得分三次来设置数据,然后我这里在每循环一次的时候都list.add(unit),所以从实际条件上来看都是个错误。应该每个设置完了再add它。即:

for (int cellNum = 0; cellNum <= row.getLastCellNum(); cellNum++) {
				HSSFCell hssfCell = row.getCell(cellNum);
				if (hssfCell == null) {
					break;
				}
				if(cellNum==0){
					unit.setName(hssfCell.getStringCellValue());
				}else if(cellNum==1){
					unit.setUnitCode(new DecimalFormat("#").format(hssfCell.getNumericCellValue()));   
				}else{
					if("教学单位".equals(hssfCell.getStringCellValue())){
						unit.setUnitType(UnitType.TEACHING_UNIT);
					}else if("科研机构".equals(hssfCell.getStringCellValue())){
						unit.setUnitType(UnitType.SCIENTIFIC_RESEARCH_INSTITUTION);
					}else if("党政机关".equals(hssfCell.getStringCellValue())){
						unit.setUnitType(UnitType.PARTY_GOVERNMENT_ORGANIZATIONS);
					}else if("直属单位".equals(hssfCell.getStringCellValue())){
						unit.setUnitType(UnitType.SUBORDINATE_UNIT);
					}else{
						unit.setUnitType(UnitType.SUBSIDIARY_UNIT);
					}
				}
			}
			list.add(unit);

按理来说应该不报错,并且应该全部都会存储的,这问题到底出在哪里呢?

debug了一下,list最后都是对的,但是在save的时候出错的。并且list是全部的(即如果为3列,10行数据,那么就是30条),三条都是重复的


借鉴了这篇文章http://howsun.blog.sohu.com/129035715.html

原因应该是出在:发生此异常即是一个游离的对象要被持久化(save)时,其ID既要ORM框架为它生成ID值,而此实体的ID却已然有值。

这个里面id都是一样的。



你可能感兴趣的:(用xls导入数据(报错) (上一篇博客)原因)