有两张表
department
----------------------
dep_id    pk
...employee
----------------------
emp_id
dep_id    fk
...如何往employee表中添加数据

解决方案 »

  1.   

    这是我在action中写的代码,不知怎么也插入不了数据public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    AddForm addForm = (AddForm) form;
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    EmployeeDAO employeeDAO = EmployeeDAO
    .getFromApplicationContext(context);

    DepartmentDAO departmentDAO = DepartmentDAO
    .getFromApplicationContext(context);

    Department department = new Department();
    department = departmentDAO.findById(addForm.getDepId());

    Employee employee = new Employee();
    employee.setEmpId(addForm.getEmpId());
    employee.setEmpName(addForm.getEmpName());
    employee.setEmpSex(addForm.getEmpSex());
    employee.setDepartment(department); employeeDAO.save(employee); return mapping.findForward("success");
    }
      

  2.   

    应该是这样,在你employeeDAO.save()操作之前,与departmentDAO关联的session已经关闭,department的状态是detached,一定要在persistence状态,你可以在你的employeeDAO中添加相应的方法或者用HibernateCallback的doInHibernate来做,还有你的结构不是很好,在你的控制代码中不要轻易暴露底层DAO的实现,可以用相应service对DAO进行封装
      

  3.   

    谢谢你的帮助,我是个初学者,很多东西都还不是很清楚,能不能提示一下代码如何写啊?还有就是如何用HibernateCallback的doInHibernate来做,能说清楚一点吗?谢谢!