Jaxb 一对多和多对一MOXy@XmlInverseReference EclipseLink 2.5

Jaxb 一对多和多对一MOXy@XmlInverseReference EclipseLink 2.5,jaxb,eclipselink,moxy,Jaxb,Eclipselink,Moxy,我将向您展示我已经拥有的类,并且我想用jaxb进行序列化。 不幸的是,当我试图序列化Person内的positionSet时,我无法完全获得Person对象内的所有属性 代码: 公共类人物{ @身份证 @列(name=“ID”) 私有整数id; @列(name=“FIRST_name”) @非NullOnlyJSP 私有字符串名; @列(name=“LAST_name”) @非NullOnlyJSP 私有字符串lastName; @OneToMany(cascade={CascadeType.A

我将向您展示我已经拥有的类,并且我想用jaxb进行序列化。 不幸的是,当我试图序列化Person内的positionSet时,我无法完全获得Person对象内的所有属性

代码:

公共类人物{
@身份证
@列(name=“ID”)
私有整数id;
@列(name=“FIRST_name”)
@非NullOnlyJSP
私有字符串名;
@列(name=“LAST_name”)
@非NullOnlyJSP
私有字符串lastName;
@OneToMany(cascade={CascadeType.ALL},fetch=FetchType.LAZY,mappedBy=“person”)
@org.hibernate.annotations.OrderBy(子句=“开始日期asc”)
private Set positionSet=new LinkedHashSet();
//getter和setter以及其他方法。。
}
公共阶级地位{
@身份证
@列(name=“ID”)
私有整数id;
@列(name=“FK_PERSON”)
@NotNull
私有整数personId;
@列(name=“FK\U位置\U类型”)
@NotNull
私有整数positionTypeId;
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“FK\u POSITION\u TYPE”,insertable=false,updateable=false)
私营实体类型;
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“FK_PERSON”,insertable=false,updateable=false)
//我需要这个注释来避免ciclyc图
@XmlInverseReference(mappedBy=“positionSet”)
私人;
@列(name=“FK\U组织单元”)
@NotNull
私有整数组织ID;
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“FK\u ORG\u UNIT”,可插入=false,可更新=false)
//我需要这个注释来避免ciclyc图
@XmlInverseReference(mappedBy=“organizationUnitPositionSet”)
私人组织单位;
//getter和setter以及其他方法。。
}
公营班级组织单位{
@身份证
@列(name=“ID”)
私有整数id;
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“FK\U组织\U单位\U类型”,可插入=false,可更新=false)
私有组织单元类型组织单元类型;
@列(name=“FK\U组织单元类型”)
私有整数organizationUnitTypeId;
@列(name=“DESCRIPTION”,长度=4000)
@NotNull
私有字符串描述;
@OneToMany(cascade={CascadeType.ALL},fetch=FetchType.LAZY,mappedBy=“organizationUnit”)
@org.hibernate.annotations.OrderBy(子句=“开始日期asc”)
//我需要这个注释来避免ciclyc图
私有集organizationUnitPositionSet=新LinkedHashSet();
//getter和setter以及其他方法。。
}
现在,正如您所理解的,这些关系是: 个人一对多职位多对一组织单位 Position有两个属性:“positionType”和“organizationUnit”,它们引用organizationUnit 当jaxb序列化时,我只能看到positionType元素以及Position中关于organizationUnit元素的任何内容。 我试着检查位置是否包含值,我发现数据在对象内部可用。 positionType和Position类中的organizationUnit属性之间的区别在于@XmlInverseReference注释,我需要该注释用于organizationUnit类映射的organizationUnit属性,而positionType不需要该注释

我怎样才能解决这个问题?为什么注释不允许我访问organizationUnit内部位置

我希望有人能帮助我。 用于向您显示它序列化但不正确 我将向您展示xml输出文件: 我看不到organizationUnit属性

    <person>
    // other property
    <position-set>
        <position>
            <id>174215</id>
            <discriminator>support</discriminator>
            <endDate>2005-06-30T00:00:00</endDate>
            <organizationUnitId>1234</organizationUnitId>
                <positionType>
                    <id>2733</id>
                    <displayValue>BLABLA</displayValue>
                        <organization-unit-type>
                            <id>101</id>
                            <description>supportRole</description>
                        </organization-unit-type>
                </positionType>
            <startDate>2005-02-01T00:00:00</startDate>
        </position>
    </position-set>

    This is the oxm file:
    <?xml version="1.0"?>
    <xml-bindings
        xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
        package-name="it.mymodel.ga.model" >
        <xml-schema
            element-form-default="QUALIFIED"/>  
        <java-types>
            <java-type name="Person"  xml-accessor-type="NONE">
                <xml-root-element/>
                <java-attributes>
                    <xml-element java-attribute="firstName" name="first-name" />
                    <xml-element java-attribute="lastName" name="last-name" />
                    <xml-element java-attribute="stringMap" name="string-map" />
                     <xml-element java-attribute="positionSet"  name="position" >
                          <xml-element-wrapper name="position-set"/>
                     </xml-element>
                </java-attributes>
            </java-type>
            <java-type name="Position"> <!-- I had to use this approach than xml-accessor-type="NONE" unlikely -->
                    <java-attributes>
                          <xml-element java-attribute="discriminator" />
                          <xml-element java-attribute="startDate" />
                          <xml-element java-attribute="endDate"/>
                          <xml-element java-attribute="organizationUnit" name="organization-unit"/>
                          <xml-element java-attribute="positionType" name="position-type"/>
                          <xml-transient java-attribute="person"/>
                          <xml-transient java-attribute="positionTypeId"/>
                          <xml-transient java-attribute="fileInfo"/>
                          <xml-transient java-attribute="personId"/>
                          <xml-transient java-attribute="priority"/>
                          <xml-transient java-attribute="uniqueIdentifier"/>
                          <xml-transient java-attribute="uuid"/>
                          <xml-transient java-attribute="removeFile"/>
                   </java-attributes>
            </java-type>
           <java-type name="OrganizationUnit">
                   <java-attributes>
                    <xml-transient java-attribute="description" name="description" />
                    <xml-element java-attribute="organizationUnitType"  name="organization-unit-type"/>
                    <xml-transient java-attribute="displayAs"/>
                    <xml-transient java-attribute="organizationUnitTypeId"/>
                    <xml-element java-attribute="displayValue" />
                  </java-attributes>
            </java-type>
            <java-type name="OrganizationUnitType" >
                        <java-attributes>
                            <xml-element java-attribute="description"/>
                            <xml-transient java-attribute="priority"/>
                        </java-attributes>
            </java-type> 
        </java-types>
    </xml-bindings>

//其他财产
174215
支持
2005-06-30T00:00:00
1234
2733
布拉布拉
101
支持角色
2005-02-01T00:00:00
这是oxm文件:

我只是通过删除Position类内organizationUnit属性上的注释@XmlInverseReference来解决问题,并为organizationUnit类内的属性positionSet指定了xml transient

oxm file :
<?xml version="1.0"?>
<xml-bindings
    xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
    package-name="mypackage" >
    <xml-schema
        element-form-default="QUALIFIED"/>  
    <java-types>
        <java-type name="Person"  xml-accessor-type="NONE">
            <xml-root-element/>
            <xml-type prop-order="firstName lastName addressSet contactSet integerMap dateMap stringMap positionSet personElementSet clobMap blobMap gaDictionaryMap "/>
            <java-attributes>
                <xml-element java-attribute="firstName" name="first-name" />
                <xml-element java-attribute="lastName" name="last-name" />
                <xml-element java-attribute="stringMap" name="string-map" >
                    <xml-java-type-adapter value="it.cineca.jaxb.adapter.StringMapAdapter" />    
                </xml-element>
                <xml-element java-attribute="personElementSet" name="person-element">
                    <xml-element-wrapper name="person-element-set"/>
                 </xml-element>
                <xml-element java-attribute="dateMap" name="date-map" >
<!--                <xml-java-type-adapter value="it.cineca.jaxb.adapter.DateMapAdapter" /> -->
                </xml-element>
                 <xml-element java-attribute="positionSet"  name="position" >
                      <xml-element-wrapper name="position-set"/>
                 </xml-element>
                <xml-element java-attribute="addressSet" name="address">                
                    <xml-element-wrapper name="address-set"/>
                 </xml-element>
                 <xml-element java-attribute="contactSet" name="contact">               
                    <xml-element-wrapper name="contact-set"/>
                 </xml-element>
                 <xml-element java-attribute="integerMap" name="integer-map"/>          
                 <xml-element java-attribute="blobMap" name="blob-map"/>
                 <xml-element java-attribute="clobMap" name="blob-map"/>
                 <xml-element java-attribute="gaDictionaryMap" name="ga-dictionary-map"/>
            </java-attributes>
        </java-type>
        <java-type name="Position">
               <java-attributes>
                      <xml-element java-attribute="discriminator" />
                      <xml-element java-attribute="startDate" />
                      <xml-element java-attribute="endDate"/>
                      <xml-element java-attribute="organizationUnit" name="organization-unit"/>
                      <xml-element java-attribute="positionType" name="position-type"/>
                      <xml-transient java-attribute="organizationUnitId"/>
                      <xml-transient java-attribute="person"/>
                      <xml-transient java-attribute="positionTypeId"/>
                      <xml-transient java-attribute="fileInfo"/>
                      <xml-transient java-attribute="personId"/>
                      <xml-transient java-attribute="priority"/>
                      <xml-transient java-attribute="uniqueIdentifier"/>
                      <xml-transient java-attribute="uuid"/>
                      <xml-transient java-attribute="removeFile"/>
               </java-attributes>
        </java-type>
       <java-type name="OrganizationUnit">
               <java-attributes>
                    <xml-element java-attribute="displayValue" />
                    <xml-element java-attribute="organizationUnitType"  name="organization-unit-type"/>
                    <xml-element java-attribute="stringMap" name="string-map" />
                    <xml-element java-attribute="dateMap" name="date-map" />
                    <xml-element java-attribute="startDate" />
                    <xml-element java-attribute="endDate" />        
                    <xml-transient java-attribute="addressSet"/>
                    <xml-transient java-attribute="contactSet"/>
                    <xml-transient java-attribute="blobMap"/>
                    <xml-transient java-attribute="clobMap"/>
                    <xml-transient java-attribute="childOrganizationUnitLinkSet" />
                    <xml-transient java-attribute="dataSet"/>
                    <xml-transient java-attribute="displayAs"/>
                    <xml-transient java-attribute="discriminatorSet"/>
                    <xml-transient java-attribute="lastModified"/>
                    <xml-transient java-attribute="lastModifiedString"/>
                    <xml-transient java-attribute="organizationUnitTypeId"/>
                    <xml-transient java-attribute="description"/>
                    <xml-transient java-attribute="parentOrganizationUnitLinkSet" />
                    <xml-transient java-attribute="positionSet"/>
                    <xml-transient java-attribute="principalContactMap"/>
              </java-attributes>
        </java-type>

    </java-types>
</xml-bindings>
oxm文件:
oxm file :
<?xml version="1.0"?>
<xml-bindings
    xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
    package-name="mypackage" >
    <xml-schema
        element-form-default="QUALIFIED"/>  
    <java-types>
        <java-type name="Person"  xml-accessor-type="NONE">
            <xml-root-element/>
            <xml-type prop-order="firstName lastName addressSet contactSet integerMap dateMap stringMap positionSet personElementSet clobMap blobMap gaDictionaryMap "/>
            <java-attributes>
                <xml-element java-attribute="firstName" name="first-name" />
                <xml-element java-attribute="lastName" name="last-name" />
                <xml-element java-attribute="stringMap" name="string-map" >
                    <xml-java-type-adapter value="it.cineca.jaxb.adapter.StringMapAdapter" />    
                </xml-element>
                <xml-element java-attribute="personElementSet" name="person-element">
                    <xml-element-wrapper name="person-element-set"/>
                 </xml-element>
                <xml-element java-attribute="dateMap" name="date-map" >
<!--                <xml-java-type-adapter value="it.cineca.jaxb.adapter.DateMapAdapter" /> -->
                </xml-element>
                 <xml-element java-attribute="positionSet"  name="position" >
                      <xml-element-wrapper name="position-set"/>
                 </xml-element>
                <xml-element java-attribute="addressSet" name="address">                
                    <xml-element-wrapper name="address-set"/>
                 </xml-element>
                 <xml-element java-attribute="contactSet" name="contact">               
                    <xml-element-wrapper name="contact-set"/>
                 </xml-element>
                 <xml-element java-attribute="integerMap" name="integer-map"/>          
                 <xml-element java-attribute="blobMap" name="blob-map"/>
                 <xml-element java-attribute="clobMap" name="blob-map"/>
                 <xml-element java-attribute="gaDictionaryMap" name="ga-dictionary-map"/>
            </java-attributes>
        </java-type>
        <java-type name="Position">
               <java-attributes>
                      <xml-element java-attribute="discriminator" />
                      <xml-element java-attribute="startDate" />
                      <xml-element java-attribute="endDate"/>
                      <xml-element java-attribute="organizationUnit" name="organization-unit"/>
                      <xml-element java-attribute="positionType" name="position-type"/>
                      <xml-transient java-attribute="organizationUnitId"/>
                      <xml-transient java-attribute="person"/>
                      <xml-transient java-attribute="positionTypeId"/>
                      <xml-transient java-attribute="fileInfo"/>
                      <xml-transient java-attribute="personId"/>
                      <xml-transient java-attribute="priority"/>
                      <xml-transient java-attribute="uniqueIdentifier"/>
                      <xml-transient java-attribute="uuid"/>
                      <xml-transient java-attribute="removeFile"/>
               </java-attributes>
        </java-type>
       <java-type name="OrganizationUnit">
               <java-attributes>
                    <xml-element java-attribute="displayValue" />
                    <xml-element java-attribute="organizationUnitType"  name="organization-unit-type"/>
                    <xml-element java-attribute="stringMap" name="string-map" />
                    <xml-element java-attribute="dateMap" name="date-map" />
                    <xml-element java-attribute="startDate" />
                    <xml-element java-attribute="endDate" />        
                    <xml-transient java-attribute="addressSet"/>
                    <xml-transient java-attribute="contactSet"/>
                    <xml-transient java-attribute="blobMap"/>
                    <xml-transient java-attribute="clobMap"/>
                    <xml-transient java-attribute="childOrganizationUnitLinkSet" />
                    <xml-transient java-attribute="dataSet"/>
                    <xml-transient java-attribute="displayAs"/>
                    <xml-transient java-attribute="discriminatorSet"/>
                    <xml-transient java-attribute="lastModified"/>
                    <xml-transient java-attribute="lastModifiedString"/>
                    <xml-transient java-attribute="organizationUnitTypeId"/>
                    <xml-transient java-attribute="description"/>
                    <xml-transient java-attribute="parentOrganizationUnitLinkSet" />
                    <xml-transient java-attribute="positionSet"/>
                    <xml-transient java-attribute="principalContactMap"/>
              </java-attributes>
        </java-type>

    </java-types>
</xml-bindings>