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



我的程序接受两个字符串,将它们拆分为数组列表,查找公共字符串,并允许用户使用复选框形式存储公共字符串。

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循环每次遍历manyTriggers时都会覆盖dao.save,而不是将其保存到数据库并继续将下一项保存在数据库中的新行中。

每次将Trigger保存在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"
}

另一种选择是使用 JPApersist()方法,该方法始终创建一个新对象(请注意,使用此 mwthod 您将无法更新现有记录(。看:

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"
}

最新更新