DataBase中重复的数据

时间:2015-07-12 03:26:01

标签: database hibernate jpa

我应该从Excel文件中读取数据并保存在我的数据库中:

类:CableServiceImpl

public class CableServiceImpl implements CableService{
private CableDao cableDao;
public CableDao getCableDao() {
    return cableDao;
                              }
public void setCableDao(CableDao cableDao) {
    this.cableDao = cableDao;
                                           }
public List<Cable> listeDesCables() {
    return cableDao.listeCable();
                                    }

public void creatCable(Cable wire) throws IOException {
    ServiceLectureExcel service = new ServiceLectureExcel();
    ArrayList<String> t = service.lectureCables();
    String tabCable[] = new String[t.size()];
    for(int i=0;i<t.size();i++){
        tabCable[i]=t.get(i);  
    }       
    for(int i=4;i<tabCable.length;i++){ 
        wire.setLeitung(tabCable[i]); 
        i++;    
        wire.setDq(tabCable[i]);
        i++;
        wire.setGrundfrabe(tabCable[i]);
        i++;
        wire.setKennfarbe(tabCable[i]);
        List<Cable> lisCable = cableDao.listeCable();

        if(lisCable.size()==0){ 
            cableDao.save(wire); 
            }
        else{
            cableDao.update(wire);
            }
    }

}

问题:当我多次执行代码时,我的BD包含重复数据。那怎么能解决?

1 个答案:

答案 0 :(得分:0)

你可以通知你的行吗? (例如:社会安全号码,GUID等)。如果是,则在数据库中创建一个日志表,并为每个导入的行标记相应的标识符为已导入。如果你没有这样的id,那么唯一的选择是逐字段比较(比如在c#中比较相等的结构)。但你也可以在这里做一个技巧:而不是直接比较逐场您可以计算每行的哈希并将其存储在db中。下次导入行时,首先计算哈希码。如果它不存在于您的哈希数据表中,那么您肯定可以将其导入。否则,您将回到将行与已导入的所有行进行比较的情况