2012-02-20 51 views
1

我在两个实体之间创建了一个多对多的映射在两个实体之间的人和车,并如预期的那样,我看到一个新表Person_Car。以下是Person.java中的代码Spring roo Hibernate更新条目多对多映射

@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(); 

我看到人表中反映的变化。我究竟做错了什么?谢谢

回答

1

尝试将@Transactional(rollback=false)添加到您的控制器方法。

rollback=false是默认的,所以你可以跳过它,只有@Transactional留下。