Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc Spring MVC+;Spring数据JPA父项更新时,子项被删除_Spring Mvc_Spring Data Jpa - Fatal编程技术网

Spring mvc Spring MVC+;Spring数据JPA父项更新时,子项被删除

Spring mvc Spring MVC+;Spring数据JPA父项更新时,子项被删除,spring-mvc,spring-data-jpa,Spring Mvc,Spring Data Jpa,当我在控制台中运行应用程序时,结果是正确的。父项正在更新,子项未删除 app.java public class app { public static void main(String[] args) { GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(); ctx.load("classpath:app-context-annotation.xml");

当我在控制台中运行应用程序时,结果是正确的。父项正在更新,子项未删除

app.java

public class app {
    public static void main(String[] args) {
        GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
        ctx.load("classpath:app-context-annotation.xml");
        ctx.refresh();

        ClientService clientService = ctx.getBean("jpaClientService", ClientService.class);
        UserService userService = ctx.getBean("jpaUserService", UserService.class);
        CustomerService customerService = ctx.getBean("jpaCustomerService", CustomerService.class);
        TroubleService troubleService = ctx.getBean("jpaTroubleService", TroubleService.class);
        Client newClient = clientService.findOne(8l);
        String newClientName = "IP 8";
        newClient.setClient(newClientName);
        clientService.saveClient(newClient);
        clientList("Find all:", clientService.findAll());
        System.out.println(client.getUserList());*/
    }
    private static void clientList (String message, List<Client> clientList) {
        System.out.println(message);
        for (Client client : clientList) {
            System.out.println(client);
        }
    }
    private static void userList (String message, List<User> userList) {
        System.out.println(message);
        for (User user : userList) {
            System.out.println(user);
        }
    }
    private static void troubleList (String message, List<Trouble> troubleList) {
        System.out.println(message);
        for (Trouble trouble : troubleList) {
            System.out.println(trouble);
        }
    }
}
公共类应用程序{
公共静态void main(字符串[]args){
GenericXmlApplicationContext ctx=新的GenericXmlApplicationContext();
load(“classpath:app context annotation.xml”);
ctx.refresh();
ClientService ClientService=ctx.getBean(“jpaClientService”,ClientService.class);
UserService UserService=ctx.getBean(“jpaUserService”,UserService.class);
CustomerService CustomerService=ctx.getBean(“jpaCustomerService”,CustomerService.class);
TroubleService TroubleService=ctx.getBean(“jpatRubleService”,TroubleService.class);
Client newClient=clientService.findOne(8l);
字符串newClientName=“IP 8”;
setClient(newClientName);
clientService.saveClient(newClient);
clientList(“全部查找:,clientService.findAll());
System.out.println(client.getUserList())*/
}
私有静态void clientList(字符串消息,列表clientList){
System.out.println(消息);
用于(客户端:客户端列表){
System.out.println(客户端);
}
}
私有静态void userList(字符串消息,List userList){
System.out.println(消息);
for(用户:userList){
System.out.println(用户);
}
}
私有静态void troubleList(字符串消息,列表troubleList){
System.out.println(消息);
用于(故障:故障列表){
系统输出打印(故障);
}
}
}
但是,当我使用MVC时,当父对象更新所有子对象时,所有表中的子对象都被删除了

edit.jspx

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
          xmlns:c="http://java.sun.com/jsp/jstl/core"
          xmlns:spring="http://www.springframework.org/tags"
          xmlns:form="http://www.springframework.org/tags/form"
          xmlns="http://www.w3.org/1999/xhtml" version="2.0">
    <jsp:directive.page contentType="text/html;charset=UTF-8"/>
    <jsp:output omit-xml-declaration="yes"/>
    <spring:message code="label_client_info" var="labelClientInfo"/>
    <spring:message code="label_client_client" var="labelClient"/>
    <spring:message code="label_client_id" var="labelId"/>
    <spring:message code="label_client_inn" var="labelInn"/>
    <spring:message code="label_client_specific" var="labelClientSpecific"/>
    <spring:message code="label_client_address" var="labelClientAddress"/>
    <spring:message code="label_client_phone" var="labelClientPhone"/>
    <spring:message code="label_client_update" var="labelClientUpdate"/>
    <spring:message code="label_client_new" var="labelClientNew"/>
    <spring:eval expression="client.id == null ? labelClientNew:labelClientUpdate" var="formTitle"/>
    <html>
    <head><title>${formTitle}</title></head>
    <body>
    <h1>${formTitle}</h1>
    <div id="contactUpdate">
        <form:form modelAttribute="client" id="clientUpdateForm" method="post">
            <c:if test="${not empty message}">
                <div id="message" class="${message.type}">"${message.message}"</div>
            </c:if>
            <form:label path="client">
                ${labelClient}
            </form:label>
            <form:input path="client"/>
            <div>
                <form:errors path="client" cssClass="error"/>
            </div>
            <form:label path="inn">
                ${labelInn}
            </form:label>
            <form:input path="inn"/>
            <div>
                <form:errors path="inn" cssClass="error"/>
            </div>
            <form:label path="address">
                ${labelClientAddress}
            </form:label>
            <form:input path="address"/>
            <div>
                <form:errors path="address" cssClass="error"/>
            </div>
            <form:label path="phone">
                ${labelClientPhone}
            </form:label>
            <form:input path="phone"/>
            <div>
                <form:errors path="phone" cssClass="error"/>
            </div>
            <form:label path="clientSpecific">
                ${labelClientSpecific}
            </form:label>
            <form:select path="clientSpecific">
                <form:options items="${clientSpecific}"/>
            </form:select>
            <form:hidden path="version"/>
            <br/>
            <button type="submit">Save</button>
            <button type="reset">Reset</button>
        </form:form>
    </div>

    </body>
    </html>
</jsp:root>

${formTitle}
${formTitle}
“${message.message}”
${labelClient}
${labelin}
${labelClientAddress}
${labelClientPhone}
${labelClientSpecific}

拯救 重置
ClientController

@RequestMapping("/clients")
@Controller

public class ClientController {
    private Log log = LogFactory.getLog(ClientController.class);
    private ClientService clientService;
    private MessageSource messageSource;

    @RequestMapping(method = RequestMethod.GET)
    public String list (Model uiModel) {
        log.info("Listing clients");
        List<Client> clients = clientService.findAll();
        uiModel.addAttribute("clients", clients);
        log.info("No. of Clients: " + clients.size());

        for (Client client : clients) {
            System.out.println(client);
        }
        return "clients/list";
    }
    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public String show(@PathVariable("id") Long id, Model uiModel){
        Client client = clientService.findOne(id);
        uiModel.addAttribute("client", client);
        uiModel.addAttribute("users", client.getUserList());
        return "clients/show";
    }
    @RequestMapping(value = "/{id}", params = "form", method = RequestMethod.POST)
    public String update(Client client, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest, RedirectAttributes redirectAttributes, Locale locale){
        log.info("Updating client:");
        if(bindingResult.hasErrors()){
            uiModel.addAttribute("message", new Message("error", messageSource.getMessage("client_save_fail", new Object[]{}, locale)));
            uiModel.addAttribute("client", client);
            return "clients/update";
        }
        uiModel.asMap().clear();
        redirectAttributes.addFlashAttribute("message", new Message("success", messageSource.getMessage("client_save_success", new Object[]{}, locale)));
        clientService.saveClient(client);
        return "redirect:/clients/"+ UrlUtil.encodeUrlPathSegment(client.getId().toString(), httpServletRequest);
    }
    @RequestMapping(value = "/{id}", params = "form", method = RequestMethod.GET)
        public String updateForm(@PathVariable("id") Long id, Model uiModel){
        uiModel.addAttribute("client", clientService.findOne(id));
        return "clients/update";
    }

    @RequestMapping(params = "form", method = RequestMethod.POST)
        public String create(Client client, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest, RedirectAttributes redirectAttributes, Locale locale){
        log.info("Creating Client:");
        if(bindingResult.hasErrors()){
            uiModel.addAttribute("message", new Message("error", messageSource.getMessage("client_create_fail", new Object[]{}, locale)));
            uiModel.addAttribute("client", client);
        }
        uiModel.asMap().clear();
        redirectAttributes.addFlashAttribute("message", new Message("success", messageSource.getMessage("client_create_success", new Object[]{}, locale)));
        clientService.saveClient(client);
        log.info("Client ID: " + client.getId() + "was created success");
        return "redirect:/clients/" + UrlUtil.encodeUrlPathSegment(client.getId().toString(), httpServletRequest);
    }

    @RequestMapping(params = "form", method = RequestMethod.GET)
        public String createForm(Model uiModel){
        Client client = new Client();
        uiModel.addAttribute(client);
        return "clients/create";
    }
    @Autowired
    public void setClientService(@Qualifier("jpaClientService") ClientService clientService){
        this.clientService = clientService;
    }
    @Autowired
    public void setMessageSource(MessageSource messageSource){
        this.messageSource = messageSource;
    }
}
@RequestMapping(“/clients”)
@控制器
公共类客户端控制器{
私有日志Log=LogFactory.getLog(ClientController.class);
私人客户服务;
私有消息源;
@RequestMapping(method=RequestMethod.GET)
公共字符串列表(模型uiModel){
log.info(“上市客户”);
List clients=clientService.findAll();
uiModel.addAttribute(“客户机”,客户机);
log.info(“客户端数量:+Clients.size());
用于(客户端:客户端){
System.out.println(客户端);
}
返回“客户/列表”;
}
@RequestMapping(value=“/{id}”,method=RequestMethod.GET)
公共字符串显示(@PathVariable(“id”)长id,模型uiModel){
Client=clientService.findOne(id);
uiModel.addAttribute(“客户机”,客户机);
uiModel.addAttribute(“users”,client.getUserList());
返回“客户/展会”;
}
@RequestMapping(value=“/{id}”,params=“form”,method=RequestMethod.POST)
公共字符串更新(客户端、BindingResult BindingResult、模型uiModel、HttpServletRequest HttpServletRequest、重定向属性、区域设置){
log.info(“更新客户端:”);
if(bindingResult.hasErrors()){
uiModel.addAttribute(“message”,新消息(“error”,messageSource.getMessage(“client_save_fail”,new Object[]{},locale));
uiModel.addAttribute(“客户机”,客户机);
返回“客户端/更新”;
}
uiModel.asMap().clear();
redirectAttributes.addFlashAttribute(“message”,新消息(“success”,messageSource.getMessage(“client_save_success”,new Object[]{},locale));
clientService.saveClient(客户端);
返回“重定向:/clients/”+UrlUtil.encodeUrlPathSegment(client.getId().toString(),httpServletRequest);
}
@RequestMapping(value=“/{id}”,params=“form”,method=RequestMethod.GET)
公共字符串updateForm(@PathVariable(“id”)长id,模型uiModel){
uiModel.addAttribute(“客户端”,clientService.findOne(id));
返回“客户端/更新”;
}
@RequestMapping(params=“form”,method=RequestMethod.POST)
创建公共字符串(客户端、BindingResult BindingResult、模型uiModel、HttpServletRequest HttpServletRequest、重定向属性、区域设置){
log.info(“创建客户端:”);
if(bindingResult.hasErrors()){
uiModel.addAttribute(“message”,新消息(“error”,messageSource.getMessage(“client_create_fail”,new Object[]{},locale));
uiModel.addAttribute(“客户机”,客户机);
}
uiModel.asMap().clear();
redirectAttributes.addFlashAttribute(“message”,新消息(“success”,messageSource.getMessage(“client_create_success”,new Object[]{},locale));
clientService.saveClient(客户端);
log.info(“客户端ID:+Client.getId()+”创建成功”);
返回“重定向:/clients/”+UrlUtil.encodeUrlPathSegment(client.getId().toString(),httpServletRequest);
}
@RequestMapping(params=“form”,method=RequestMethod.GET)
公共字符串createForm(模型uiModel){
客户端=新客户端