Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.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

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
Java 使用dao和for循环保存到数据库,保存时被覆盖_Java_Spring Mvc_Spring Boot_Intellij Idea - Fatal编程技术网

Java 使用dao和for循环保存到数据库,保存时被覆盖

Java 使用dao和for循环保存到数据库,保存时被覆盖,java,spring-mvc,spring-boot,intellij-idea,Java,Spring Mvc,Spring Boot,Intellij Idea,我的程序获取两个字符串,将它们拆分为一个arraylist,查找公共字符串,并允许用户使用复选框表单存储公共字符串 public String savedResults(@ModelAttribute @Valid Trigger newTrigger, User aUser, Model model, @RequestParam String aTrigger){ model.addAttribute("aTrigger", aTrigger); aUser.getUid(

我的程序获取两个字符串,将它们拆分为一个arraylist,查找公共字符串,并允许用户使用复选框表单存储公共字符串

public String savedResults(@ModelAttribute @Valid Trigger newTrigger, User aUser, Model model, @RequestParam String aTrigger){

    model.addAttribute("aTrigger", aTrigger);

    aUser.getUid();

    newTrigger.setUser(aUser);
    String[] manyTriggers = aTrigger.split(",");

    for(String item : manyTriggers) {
        newTrigger.setKnownTriggers(item);
        triggerDao.save(newTrigger);
    }
    return "html file"
}

问题是要将每个选定项保存到新行中。
for
循环正在覆盖
dao。每次它在
多个触发器中迭代时,save
,而不是将其保存到数据库并继续保存数据库新行中的下一项。

每次在
for
循环中保存时,您都可以创建
触发器的新实例,详情如下:

public String savedResults(@ModelAttribute @Valid Trigger newTrigger, User aUser, Model model, @RequestParam String aTrigger){

    model.addAttribute("aTrigger", aTrigger);

    aUser.getUid();

    String[] manyTriggers = aTrigger.split(",");

    for(String item : manyTriggers) {
        Trigger newTrigger = new Trigger();
        newTrigger.setUser(aUser);
        newTrigger.setKnownTriggers(item);
        triggerDao.save(newTrigger);
    }
    return "html file"
}

另一个选项是使用JPA
persist()
方法,该方法始终创建一个新对象(请注意,使用此方法您将无法更新现有记录)。见:


每次尝试在
for
循环中创建并保存
Trigger
的新实例。
    public String savedResults(@ModelAttribute @Valid Trigger newTrigger, User aUser, Model model, @RequestParam String aTrigger){

    model.addAttribute("aTrigger", aTrigger);

    aUser.getUid();

    newTrigger.setUser(aUser);
    String[] manyTriggers = aTrigger.split(",");

    for(String item : manyTriggers) {
        newTrigger.setKnownTriggers(item);
        triggerDao.persist(newTrigger);
    }
    return "html file"
}