我在两个实体Person和car之间的spring roo中创建了多对多的映射,并且正如我所料,我看到了一个新表Person_Car。下面是Person.java中的代码
@ManyToMany(cascade = CascadeType.ALL, mappedBy = "persons")
private Set<Car> cars= new HashSet<Car>();
现在我想在表格中添加条目。我将汽车设置为person对象并执行person.merge()。
@RequestMapping(value ="/saveCars", method = RequestMethod.POST)
@ResponseBody
public String saveCars(@RequestParam("personId")Long personId, @RequestParam("cars") String incomingCars){
Map<String, Object> response = new HashMap<String, Object>();
try{
...
Person person = Person.findPerson(personId);
Set<Car> cars = person.getCars();
for(int i=0 ; i<temp.length ; i++){
carID = Long.parseLong(temp[i]);
cars.add(Car.findCar(carID));
}
person.setCars(cars);
person.merge();
}
LOG.debug("cars successfully added to questionnaire");
response.put("message", "success");
}
return new JSONSerializer().exclude("*.class").deepSerialize(response);
}
但是,Person_Car表中没有输入任何条目。但是,当我做像
这样的事情时Person person = Person.findPerson(personId);
person.setName("Jonathan");
person.merge();
我看到人员表中反映的变化。我究竟做错了什么?感谢
答案 0 :(得分:1)
尝试将@Transactional(rollback=false)
添加到控制器方法中。
rollback=false
是默认值,因此您可以跳过它,只剩下@Transactional
。