2012-02-20 69 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留下。