Spring roo Hibernate обновление записи много ко многим сопоставления - PullRequest
1 голос
/ 20 февраля 2012

Я создал отображение «многие ко многим» в Spring Roo между двумя объектами Person и автомобилем, и, как и ожидалось, я вижу новую таблицу 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();

, я вижу изменения, отраженные в таблице персон.Что я делаю неправильно?Спасибо

1 Ответ

1 голос
/ 20 февраля 2012

Попробуйте добавить @Transactional(rollback=false) к вашему методу контроллера.

rollback=false по умолчанию, так что вы можете пропустить его, и останется только @Transactional.

...