如何使用 JAXB 注释 Grails 域 类 中的关联?

How do I annotate associations in Grails domain classes with JAXB?

我将 Apache CXF 嵌入到我的 Grails Web 应用程序中,这样我就可以通过 SOAP 公开服务。我还不是很熟悉这个框架,但我认为它能够使用任何 POJO/POGO 作为结果 and/or 参数,它们必须用 JAXB 注释。我创建了一个演示服务,向我证实了这一点。我还从这个关于获取 Groovy and JAXB to play nice 的 Whosebug 问题中获得了一些信息。现在,我的问题特别是关于在 Grails 域 classes 中注释关联。我该怎么做?

如果不可能,我正在考虑为我的 SOAP 服务需要的每个域 class 创建某种相应的 DTO。这可能不是最佳做法,但似乎还不错……是吗?

我了解到可以在 Grails 中声明对域 class 中任何关联的任何引用。例如:

class Book {

    static hasMany = [categories: Category]

    List categories

}

这允许我像往常一样使用 JAXB 注释来注释声明的字段。

@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
class Book {

    static hasMany = [categories: Category]

    @XmlElementWrapper
    @XmlElement(name='category')
    List categories

}