2011-10-08 5 views
0

하나의 컨트롤러에서 액세스 2 서비스 방법을 사용하고 있습니다. Task를 생성하고 싶지만 동시에 새로운 Role을 생성하고 Task의 roleId (외래 키)에 자동 증가 ID를 할당하려고합니다. 일대일 매핑입니다.최대 절전 모드 및 스프링 MVC에서 하나의 컨트롤러에서 두 가지 서비스 방법에 액세스

simpleFormContrller에서 구현할 수 있습니까? 어떻게해야합니까?

public class CreateTaskController extends SimpleFormController {

HResourceService hrService;   // Create a Service class instance. 

public void setHResourceService(HResourceService hrservice) { 
    this.hrService = hrservice; 
} 

public CreateTaskController() { 

    setCommandClass(Task.class); 
     ` 

는`@Override 보호의 ModelAndView onSubmit (개체 명령) 예외를 throw {

Task task = (Task) command; 

    //ContactService.createContact(contact); 

    hrService.createTask(task); 

    ModelAndView mv = new ModelAndView(); 

    mv.setViewName(getSuccessView()); 

    mv.addObject("taskCreated", task.getDescription()); // Pass response to taskCreated view 
    return mv; 
} 

}`

답변

0

당신이 올바른 관계 정의가있는 경우 아무 문제가 없어야합니다 최대 절전 모드 간.

public class Role implements Serializable { 

    @OneToOne(cascade=CascadeType.ALL,mappedBy="task")  
    private Task task; 

} 

public class Task implements Serializable { 
.... 
    @OneToOne 
    @JoinColumn(cascade=CascadeType.ALL,"role_id") 
    private Role role; 
.... 
} 

@Override protected ModelAndView onSubmit(Object command) throws Exception { 

    Task task = (Task) command; 
    task.setRole(new Role("big_brother").setTask(task)); 

    hrService.createTask(task); 

    ModelAndView mv = new ModelAndView(); 

    mv.setViewName(getSuccessView()); 

    mv.addObject("taskCreated", task.getDescription()); // Pass response to taskCreated view 
    return mv; 
}