Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何封送/取消封送来自同一对象模型的不同xml_Java_Hibernate_Jaxb2 - Fatal编程技术网

Java 如何封送/取消封送来自同一对象模型的不同xml

Java 如何封送/取消封送来自同一对象模型的不同xml,java,hibernate,jaxb2,Java,Hibernate,Jaxb2,我是JAXB新手,希望能得到一些帮助 首先让我给你一点背景 我有一个相对简单的对象模型,基于两个主要类:Provider和Product。现在提供者引用了他可以提供的产品列表,而产品引用了可以提供它的提供者列表。也就是说,我有循环引用 产品是以复合模式构建的,因为:我不想受到类别、类型的限制,而是希望创建一个尽可能灵活的产品树。b我想通过相同的界面管理产品和树元素,即所谓的类别 我们现在都知道,同一个抽象产品可以有许多不同的物理实现,例如:汽车是一个抽象产品,而丰田雅力士是一个物理产品。因此,为

我是JAXB新手,希望能得到一些帮助

首先让我给你一点背景

我有一个相对简单的对象模型,基于两个主要类:Provider和Product。现在提供者引用了他可以提供的产品列表,而产品引用了可以提供它的提供者列表。也就是说,我有循环引用

产品是以复合模式构建的,因为:我不想受到类别、类型的限制,而是希望创建一个尽可能灵活的产品树。b我想通过相同的界面管理产品和树元素,即所谓的类别

我们现在都知道,同一个抽象产品可以有许多不同的物理实现,例如:汽车是一个抽象产品,而丰田雅力士是一个物理产品。因此,为了分离产品的抽象实现和物理实现,我实现了一个桥接模式。抽象产品现在是ProductTemplate,上面提到的复合产品和物理产品是ProductImplementation

我设法使用Hibernate和Spring对此进行建模

现在我想生成XML字符串,让后端和前端进行对话

目前,我正在与JAXB进行一些研究,看看它是否能满足我的需要:

我想封送一个提供程序及其所有ProductTemplate的列表 我想封送一个ProductTemplate及其所有提供者的列表 然而,这只是我需要的一个方面。我还希望能够从同一个类生成不同版本的XML字符串。例如,从提供者对象,我希望能够封送包含

只有它的基本信息名称、地址

扩展信息上次发布的产品、上次交付日期

完整的一个月,就是我在BD里关于他的一切

目前,我能够使用JAXB anotations封送ProductTemplate,因为我在Provider类中将它们作为XmlTransient封送。这还不够好

在这一点上,我并没有要求提供详细的代码说明。我想问的是:

JAXB能满足我的需要吗? 如果是,请建议一种方法,我已经看到这篇文章回答了我的部分问题,特别是来自单个类的多个XML!
我发布这个问题已经有一段时间了,我在Blaise Doughan的博客和MOXy网站上找到了答案

我没有太多的时间来详细说明,但诀窍是使用绑定文件。您可以拥有与单个类相关的任意多个绑定文件。您只需要将它链接到您的JAXBContext

我发现它不容易使用,但当使用cyclick引用编组类时,它很方便


希望这能有所帮助,希望有一天我能有时间详细解释:

大家好,自从我写了那个问题,我已经查看了Blaise Doughan的博客。这里说,您可以在没有注释的情况下使用JAXB,以获得更大的灵活性。这很可能满足我的需要。潜入JAXB…MOXy/JAXB似乎满足了我的需要!我使用了XMLTransient标记,使字段不可用。