JPA / Hibernate / Spring - 主键异常

时间:2018-05-09 13:39:45

标签: java spring hibernate jpa java-ee

Eclipse抛出异常 - 对于'PRIMARY'键重复输入'201805091-1'。我理解异常,但我不明白为什么下面的代码在我的数据库中创建一个新记录。我认为这应该是这样的:如果日期和医生ID的组合不存在 - 那么使其使用当前在数据库中的组合。但显然有一些错误......

非常感谢:)

OperationsDate od = null; // these 6 lines of the code may be problematic

        if(em.find(OperationsDate.class, id) != null) {
            od = em.find(OperationsDate.class, id);
        } else {
            od = new OperationsDate(id);
        }

public void process(List<Integer> list, int doctorId, String pin, boolean inf) {
        Patient p = em.find(Patient.class, pin);
        Doctor d = em.find(Doctor.class, doctorId);

        p.addDoctor(d);
        d.addPatient(p);

        int id = countId(doctorId);

        OperationsDate od = null;

        if(em.find(OperationsDate.class, id) != null) {
            od = em.find(OperationsDate.class, id);
        } else {
            od = new OperationsDate(id);
        }

        if(inf) {
            for(int number : list) {
                Medicine m = em.find(Medicine.class, number);

                od.setDoctor(d);
                d.addOperationsDate(od);
                od.addMedicine(m);
                m.addOperationsDate(od);
            }
        } else {
            Operation o = em.find(Operation.class, list.get(0));

            od.setDoctor(d);
            d.addOperationsDate(od);
            od.addOperation(o);
            o.addOperationsDate(od);
        }

    }

public int countId(int doctorId) {
        long millis=System.currentTimeMillis();  
        java.sql.Date date=new java.sql.Date(millis);  

        String id = "";
        String date2 = date.toString();
        for(int i=0; i < date2.length();i++) {
            if(i == 4 || i == 7) {
                continue;
            }
            id += date2.charAt(i);
        }
        id += doctorId;
        int id2 = Integer.parseInt(id);

        return id2;
    }

0 个答案:

没有答案