Grails CXF плагин Веб-сервис - PullRequest
1 голос
/ 09 сентября 2010

Мне было интересно, как лучше всего обрабатывать запрос на обновление существующего объекта (например, пользователя) при получении запроса в качестве запроса веб-службы.

В моем проекте у меня есть класс домена Person, и я хотел бы представить операции CRUD как операцию веб-сервиса через плагин CXF. Поэтому я делаю PersonService и открываю методы с помощью

static expose = ['cxfjax']

Тогда у меня есть метод обновления:

@WebResult(name = "person")
@WebMethod(operationName = "update")
Person update(@WebParam(name="person")Person person) {
  println "Updating $person"
  return person.save()
}

В сервисе я получаю прекрасный объект Person, но даже если у него есть идентификатор существующего человека, создается новый человек, и идентификатор изменяется, чтобы отразить это.

ТАК ... как я могу получить человека, которого я получаю, "объединенным" в сеанс Hibernate, чтобы Grails распознал его как существующего Человека?

С уважением,

Christian

Ответы [ 2 ]

0 голосов
/ 10 сентября 2010

Не уверен на 100%, но работает ли attach () ? т.е.

@WebResult(name = "person")
@WebMethod(operationName = "update")
Person update(@WebParam(name="person")Person person) {
  println "Updating $person"
  person.attach();
  return person.save()
}

Я думаю, в этом суть метода.

0 голосов
/ 10 сентября 2010

возможно ...

@WebResult(name = "person")
@WebMethod(operationName = "update")
Person update(@WebParam(name="person")Person person) {

  println "Updating $person"
  def p = Person.get(person.id)
  if ( p ) {
     // what ever your merge logic is...
  } else {
     return person.save()
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...