问题描述
三个表部门表(dept)员工表(emp)员工附件表(empfile)关系:部门表和员工表是一对多员工表和附件表是一对多(添加员工时上传的附件重新做了一个附件表用外键关联起来)每一步我都写了注视而且很清晰谢谢了各位主要代码如下:publicclassUserActionextendsActionSupportimplementsModelDriven<Emp>{privateEmpemp=newEmp();---------->实例化员工表(里边有员工的一些具体信息如果年龄,爱好,部门等)privateEmpInterempServiceImpl;--------->员工接口(里边有员工的增删改查)等方法privateDeptInterdeptServiceImpl;--------->部门接口(里边有员工的增删改查)等方法privateEmpfileempfile=newEmpfile();------->员工附件表里边两个字段,Filename存放附件的名称uuidfilename存放附件的路径和uuid名称@OverridepublicEmpgetModel(){//TODOAuto-generatedmethodstub//使用模型驱动returnemp;}publicStringadd()throwsIOException{//上传附件if(upload!=null){StringuuidName=UUID.randomUUID().toString();Stringpath="/WEB-INF/upload/"+uuidName;//存放uuid文件名和路径FiledestFile=newFile(ServletActionContext.getServletContext().getRealPath(path));FileUtils.copyFile(upload,destFile);//将上传上来的文件的真实名称和uuid名称设进附件表(empfile)表empfile.setFilename(uploadFileName);//设进附件表的filename字段empfile.setUuidfilename(path);//设进附件表的uuidfilename字段***就是这里出错了员工表和附件表是一对多的维护关系我不知道这里应该怎样写就会对请教了emp.setEmpfiles((Set)empfile);//我在员工表设置了级联更新将empfile表的内容设进到雇员集合里就是这里出错了,按理说hibernate应该会自动维护一对多的关联的}//通过选择的部门select下拉框获取部门的id值然后通过方法获得部门emp.setDept((Dept)empServiceImpl.findObjectById(Dept.class,newBigDecimal(emp.getDeptId())));//添加时候要在emp.hbm.xml中配置使用级联更新empServiceImpl.addObject(emp);return"userAddSucess";}//定义上传文件的接收变量privateFileupload;//上传文件privateStringuploadContentType;//上传类型privateStringuploadFileName;//真实文件名
解决方案
解决方案二:
你在设置hibernate时候设置cascade="all"级联