Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从已持久化实体的引用中持久化实体_Java_Jpa_Eclipselink - Fatal编程技术网

Java 从已持久化实体的引用中持久化实体

Java 从已持久化实体的引用中持久化实体,java,jpa,eclipselink,Java,Jpa,Eclipselink,我是jpa新手,我想保留一个实体(leaveTotal,它保存休假信息,如分配的休假天数、上一年的b/f、当前月份以及对员工和typeofleave类的引用),员工和typeofleave实体都已被保留。所以,现在我想将LeaveTotal与这两个类相关联,然后将其持久化 我使用eclipselink 2.1作为库及其桌面应用程序 我想做的是这个 Dept dp = getDeptByName(em, departmentComboBox.getSelectedItem().

我是jpa新手,我想保留一个实体(leaveTotal,它保存休假信息,如分配的休假天数、上一年的b/f、当前月份以及对员工和typeofleave类的引用),员工和typeofleave实体都已被保留。所以,现在我想将LeaveTotal与这两个类相关联,然后将其持久化

我使用eclipselink 2.1作为库及其桌面应用程序

我想做的是这个

          Dept dp = getDeptByName(em, departmentComboBox.getSelectedItem().toString());
            Employee emp = new Employee();
            emp.setId(id1);
            emp.setIdnum(idTextField.getText());
            emp.setName(empnameTextField.getText());
            emp.setAddress(addressTextField.getText());
            emp.setEmail(emailTextField.getText());
            emp.setGender(genderComboBox.getSelectedItem().toString());
            emp.setPhone(phoneTextField.getText());
            emp.setStaffcol(staffNoTextField.getText());
            emp.setDept(dp);

            em.getTransaction().begin();
            dp.getEmployeeCollection().add(emp);
            em.persist(dp);
            em.flush();
            em.getTransaction().commit();

            Leavetype lp;
            lp = em.createQuery("SELECT c FROM Leavetype c WHERE c.name = :name", Leavetype.class).setParameter("name", "annual").getSingleResult();
            Leavetotal lt = new Leavetotal();
            lt.setId(id1);
            lt.setAllocated(Integer.parseInt(allocatedDaysTextField.getText()));
            lt.setBalbf(Integer.parseInt(balBFTextField.getText()));
            lt.setTotal(Integer.parseInt(totalTextField.getText()));
            lt.setRem(Integer.parseInt(remainingTextField.getText()));
            lt.setMonthly(Integer.parseInt(monthlyTextField.getText()));
            lt.setMonth(getMonthForInt(monthNumber));
            lt.setStaff(emp);
            lt.setTypeName(lp);


            em.getTransaction().begin();
            emp.getLeavetotalCollection().add(lt);
            lp.getLeavetotalCollection().add(lt);
            em.persist(emp);
            em.persist(lp);
            em.flush();
            em.getTransaction().commit();

那么你的问题是什么?任何错误?只有在与之相关的employee或leavetype关系上设置了cascade persist,才会持久化Leavetotal。否则它应该抛出一个异常