2015-03-13 22 views
3

我需要编辑一个窗体,它处理两个实体类,file.javaclient.java,它们的主键是client.clientId,位于file.java中。我可能在网址上做了一些错误,并且正在修复中。如何在Spring MVC中以单一形式编辑两个模型类

这是file.java

@Entity 
public class file { 
    @Id 
    private int fileNumber; 
    private String fileName; 
    private String description; 
    private String purpose; 
    @Transient 
    private String assignedAdvocate; 
    private String comment; 
    private int Client_clientID; 
    @DateTimeFormat(pattern = "dd-MM-yyyy") 
    private Date timestamp; 

这是client.java

@Entity 
public class client { 

    @Id 
    @GeneratedValue 
    private int clientId; 
    @NotNull 
    private String clientName; 
    private String clientAddress; 
    private String contactPerson; 
    private int phone; 
    @Email 
    private String email; 
    private String bank; 
    private String branch; 
    private String accountNumber; 

这是控制器类,其中我处理的编辑。

ManageFiles.java 



@Controller 
@RequestMapping("/advocatoree/manageFiles") 
public class ManageFiles { 

    @PersistenceContext 
    EntityManager em; 

    @RequestMapping(value = "/searchFile") 
    public ModelAndView inputFileNumber(ModelAndView model){ 

     model.setViewName("searchFile"); 
     return model; 
    } 

    @Transactional 
    @RequestMapping(value = "/fileStatus", method = RequestMethod.GET) 
    public ModelAndView viewFileStatus(@RequestParam("file_number")int id, ModelAndView model){ 

     model.setViewName("fileStatus"); 

     file file = em.find(com.techflakes.advocatoree.model.file.class, id); 
     model.addObject("file", file); 

     client client = (com.techflakes.advocatoree.model.client)em.createQuery("SELECT c FROM client c WHERE c.clientId =:id") 
       .setParameter("id", file.getClient_clientID()).getSingleResult(); 
     model.addObject("client", client); 

     List<deposit> deposits = (List<deposit>)em.createQuery("SELECT d FROM deposit d WHERE d.File_fileNumber =:id") 
       .setParameter("id", id).getResultList(); 


     List<expense> expenses = (List)em.createQuery("SELECT e FROM expense e WHERE e.File_fileNumber =:id") 
       .setParameter("id", id).getResultList(); 

     model.addObject("depositList", deposits); 
     model.addObject("expenseList", expenses); 

     List<bill> fileBills = em.createQuery("SELECT b FROM bill b WHERE b.file_fileNumber =:id") 
       .setParameter("id", id).getResultList(); 

     model.addObject("fileBills", fileBills); 

     List<fileStatus> fileStatusList = (List)em.createQuery("SELECT f FROM fileStatus f WHERE f.file_fileNumber =:id").setParameter("id", id).getResultList(); 
     for(fileStatus fs: fileStatusList){ 
      String s =(String)em.createQuery("SELECT e.name FROM employee e WHERE e.employeeID =:id") 
        .setParameter("id", fs.getEmployee_employeeID()).getSingleResult(); 
      fs.setEmployeeName(s); 
     } 
     model.addObject("fileStatusList", fileStatusList); 

     List<employee> employeeList = em.createQuery("SELECT e FROM employee e WHERE e.employeeID !=0").getResultList(); 

     model.addObject("employeeList", employeeList); 

     List<Integer> employeefiles = em.createQuery("SELECT e.employee_employeeID FROM employeefile e WHERE e.file_fileNumber =:id") 
       .setParameter("id", id).getResultList(); 

     ArrayList<String> employeeNames = new ArrayList<String>(); 
     for(Integer i: employeefiles){ 
      employee e = em.find(employee.class, i); 
      employeeNames.add(e.getName()); 
     } 

     model.addObject("employeeNames", employeeNames.toString()); 

     model.addObject("employeeFiles", employeefiles); 
     return model; 
    } 


    @Transactional 
    @RequestMapping(value = "/updateFileClient/{id}", method = RequestMethod.POST) 
    public ModelAndView modifyFileClientInfo(ModelAndView model, @PathVariable("id")int id){ 
     model.setViewName("modifyFileClientInfo"); 
     file file = em.find(com.techflakes.advocatoree.model.file.class, id); 
//  client client = em.find(com.techflakes.advocatoree.model.client.class, id); 
     client client = (com.techflakes.advocatoree.model.client)em.createQuery("SELECT c FROM client c WHERE c.clientId =:id") 
       .setParameter("id", file.getClient_clientID()).getSingleResult(); 
     int zero=0; 
     List<employee> employeeList = em.createQuery("SELECT e FROM employee e WHERE e.employeeID >:zero") 
       .setParameter("zero", zero).getResultList(); 
     model.addObject("employeeList", employeeList); 
     model.addObject("files", file); 
     model.addObject("clients", client); 
     return model; 
    } 

    @Transactional 
    @RequestMapping(value = "/updatedFileInfo/{id}", method = RequestMethod.POST) 
    public String updateFileInfo(@ModelAttribute("")file f, client c, 
             @PathVariable("id")int id){ 

     file file = em.find(com.techflakes.advocatoree.model.file.class, id); 
     client client = em.find(com.techflakes.advocatoree.model.client.class, id); 
//  client client = (com.techflakes.advocatoree.model.client)em.createQuery("SELECT c FROM client c WHERE c.clientId =:id") 
//    .setParameter("id", file.getClient_clientID()).getSingleResult(); 
     file.setFileName(f.getFileName()); 
     file.setDescription(f.getDescription()); 
     file.setPurpose(f.getPurpose()); 
     file.setAssignedAdvocate(f.getAssignedAdvocate()); 
     file.setComment(f.getComment()); 
     file.setTimestamp(f.getTimestamp()); 
     file.setClient_ClientID(c.getClientId()); 
     client.setClientName(c.getClientName()); 
     client.setClientAddress(c.getClientAddress()); 
     client.setContactPerson(c.getContactPerson()); 
     client.setPhone(c.getPhone()); 
     client.setEmail(c.getEmail()); 
     client.setBank(c.getBank()); 
     client.setBranch(c.getBranch()); 
     client.setAccountNumber(c.getAccountNumber()); 
     em.persist(client); 
     em.flush(); 
     em.refresh(client); 
     em.persist(file); 
     return "redirect:/advocatoree/manageFiles/searchFile"; 
    } 

} 

这是filestatus.jsp

<form action="/advocatoree/manageFiles/updateFileClient/${file.fileNumber}" method="post"> 
               <button type="submit" class="btn btn-purple">Edit Information</button> 
              </form> 

编辑按钮,这是modifyFileClientInfo.jsp

<form method="post" action="/advocatoree/manageFiles/updatedFileInfo/${clients.clientId}"> 

URL操作一次,我编辑的数据,并提交他们,他们应该被保存在数据库中,并且还应该在我的页面中显示编辑后的信息。我看到的是当我单击编辑按钮时,它取得fileNumber,并且在我编辑并提交数据后,编辑后的信息将保存在与前一个文件的clientId相同的文件编号中。如果15是文件编号65的clientId,则数据将保留在文件编号15中。

请。帮帮我!

回答

1

看着你的方法,我发现你保存了两个文件&客户端ID,但坚持你只是坚持客户端ID。但请注意,如果不保留文件ID,你完全可以。也许强制保留客户端ID存在问题。尝试没有它。它应该工作。

再次,逻辑上你的方法应该工作。我想你没有妥善保存这些值。尝试在保存它们之前获取保存的ID值的打印,并检查是否正确存储它们。

相关问题