首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grails CXF插件CXF服务

Grails CXF插件CXF服务
EN

Stack Overflow用户
提问于 2010-09-10 02:28:44
回答 2查看 1.1K关注 0票数 1

我想知道当作为webservice请求接收更新请求时,处理现有实体(例如个人)更新请求的最佳方式是什么。

在我的项目中,我有一个Person域类,我想通过CXF插件将CRUD操作公开为webservice操作。所以我创建了一个PersonService,并用

代码语言:javascript
复制
static expose = ['cxfjax']

然后我有了update方法:

代码语言:javascript
复制
@WebResult(name = "person")
@WebMethod(operationName = "update")
Person update(@WebParam(name="person")Person person) {
  println "Updating $person"
  return person.save()
}

在服务中,我得到了一个很好的Person对象,但即使它有一个现有person的id,也会创建一个新的person,并更改id以反映这一点。

所以..。如何将收到的人员“合并”到Hibernate会话中,以便Grails将其识别为现有人员?

致以亲切的问候,

克里斯蒂安

EN

回答 2

Stack Overflow用户

发布于 2010-09-10 05:00:53

也许..。

代码语言:javascript
复制
@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()
  }
}
票数 0
EN

Stack Overflow用户

发布于 2010-09-10 15:02:35

不是100%确定,但是attach()能工作吗?即

代码语言:javascript
复制
@WebResult(name = "person")
@WebMethod(operationName = "update")
Person update(@WebParam(name="person")Person person) {
  println "Updating $person"
  person.attach();
  return person.save()
}

我认为这就是该方法的意义所在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3679454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档