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