Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/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 同一类的Jaxb关联_Java_Jaxb - Fatal编程技术网

Java 同一类的Jaxb关联

Java 同一类的Jaxb关联,java,jaxb,Java,Jaxb,对不起,标题不是很明确。。。在我的projet模型中,我有一个产品实体,可以与其他产品关联,但我不知道如何对其进行注释。目前,我已经做到了: @XmlRootElement(name = "product") @XmlType(propOrder = { "barCode", "productName", "price", "brand", "description", "reviews", "photos", "videos", "associated" }) @Xml

对不起,标题不是很明确。。。在我的projet模型中,我有一个
产品
实体,可以与其他产品关联,但我不知道如何对其进行注释。目前,我已经做到了:

    @XmlRootElement(name = "product")
    @XmlType(propOrder = { "barCode", "productName", "price", "brand", "description", "reviews", "photos", "videos", "associated" })
    @XmlAccessorType(XmlAccessType.FIELD)
    public class Product {
        @XmlAttribute(name = "id")
        private Long            productId;
        private String          barCode;
        private String          productName;
        private Double          price;

        @XmlElementWrapper(name = "photos")
        @XmlElement(name = "photo", type = String.class)
        private List<String>    photos;

        @XmlElementWrapper(name = "videos")
        @XmlElement(name = "video", type = String.class)
        private List<String>    videos;

        private String          brand;
        private String          description;

        @XmlElementWrapper(name = "reviews")
        @XmlElement(name = "review", type = Review.class)
        private List<Review>    reviews;

        @XmlElementWrapper(name = "associated")
        @XmlElement(name = "product", type = Product.class)
        private List<Product>   associated;

        // with constructor, getters and setters not annotated
   }
@XmlRootElement(name=“product”)
@XmlType(Propoder={“条形码”、“产品名称”、“价格”、“品牌”、“说明”、“评论”、“照片”、“视频”、“关联”})
@XmlAccessorType(XmlAccessType.FIELD)
公共类产品{
@xmltattribute(name=“id”)
私有长productId;
私有字符串条形码;
私有字符串产品名称;
私人双价;
@XmlElementWrapper(name=“照片”)
@XmlElement(name=“photo”,type=String.class)
私人名单照片;
@XmlElementWrapper(name=“视频”)
@XmlElement(name=“video”,type=String.class)
私人名单视频;
自有品牌;
私有字符串描述;
@XmlElementWrapper(name=“reviews”)
@XmlElement(name=“review”,type=review.class)
私人名单审查;
@XmlElementWrapper(name=“关联”)
@XmlElement(name=“product”,type=product.class)
关联的私有列表;
//构造函数、getter和setter没有注释
}
目前,由于循环引用,此映射不起作用。我想要一些类似于:

<product id="1">
   <barCode>123456789</barCode>
   <productName>Product 1</productName>
   <price>100.0</price>
   <brand>Brand 1</brand>
   <description>Description 1</description>
   <reviews/>
   <photos/>
   <videos/>
   <associated>
      <product id="2">
         <barCode>987654321</barCode>
         <productName>Product 2</productName>
         <price>500.0</price>
         <brand>Brand 2</brand>
         <description>Description 2</description>
      </product>
   </associated>
</product>

123456789
产品1
100
品牌1
说明1
987654321
产品2
500
品牌2
说明2
我的意思是在映射中没有相关的
照片
视频
评论
是否可能?

我希望我说得够清楚,如果不只是问,我会详细解释的

如果要排除映射字段,请使用@XmlTransient(适用于处理循环引用)

谢谢您的回答,但它将不再包含在根元素中,我只会将其从关联的
字段中删除,而不是从其他字段中删除……对不起,我不理解您的问题,然后确定,对不起,我不是很清楚。。。我想生成一个类似示例的XML文件,我指的是一个产品及其关联产品。但目前,由于
关联的
字段,存在循环引用,我不知道如何做到这一点。我更容易理解吗?您必须在
关联的
字段中使用@xmltransive。这将从XML中排除它。不可能映射循环引用。使用
afterUnmarshal()
或者你可以查看MOXy的@xmlInversereReference(尽管我从来没有使用过这两种方法),在对象被解组后,有一些方法可以重建对象。好吧,我明白了,我认为这是可能的。。。最后,我将使用一个标识符列表。我不能使用
afterUnmarshal()
,因为这是一个带有移动客户端的RESTful web服务。我已经检查了@XmlInverseReference,但我认为它不适用于这种情况!谢谢你的帮助!