JAXB | MOXy | EclipseLink-JAXB无法映射java接口com.domain.Entity,因为它有多个可映射的父接口

JAXB | MOXy | EclipseLink-JAXB无法映射java接口com.domain.Entity,因为它有多个可映射的父接口,jaxb,eclipselink,marshalling,unmarshalling,moxy,Jaxb,Eclipselink,Marshalling,Unmarshalling,Moxy,所以我遇到了一个问题,我试图将一个复杂的bean结构转换成XML格式 我有五个类在同一个包中注释 每个类扩展一个抽象类并实现一个接口: @Entity @Table(name = SubscriptionInvoiceItemChargesImpl.TABLE_NAME) @DataCache(enabled = false) public class SubscriptionInvoiceItemChargesImpl extends AbstractEntityImpl implements

所以我遇到了一个问题,我试图将一个复杂的bean结构转换成XML格式

我有五个类在同一个包中注释

每个类扩展一个抽象类并实现一个接口:

@Entity
@Table(name = SubscriptionInvoiceItemChargesImpl.TABLE_NAME)
@DataCache(enabled = false)
public class SubscriptionInvoiceItemChargesImpl extends AbstractEntityImpl implements SubscriptionInvoiceItemCharges {
以下是abstractEntityImpl类:

public abstract class AbstractEntityImpl extends AbstractPersistenceImpl implements Entity {
以下是实体接口:

public interface Entity extends PureEntity, Persistence {

}
现在,我只想让我的5个类中定义的方法通过组合相互依赖,并写入XML,而不需要来自父类/接口的任何数据

jaxb.properties的内容:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
以下是绑定文件:

<?xml version="1.0"?>
<xml-bindings 
    xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
    package-name="com.domain.ecomm.impl">
    <java-types>
        <java-type name="SubscriptionContactImpl" super-type="java.lang.Object"/>
    </java-types>
    <java-types>
        <java-type name="SubscriptionInvoiceItemChargesImpl" super-type="java.lang.Object"/>
    </java-types>
    <java-types>
        <java-type name="SubscriptionInvoiceItemImpl" super-type="java.lang.Object"/>
    </java-types>
    <java-types>
        <java-type name="SubscriptionAccountImpl" super-type="java.lang.Object"/>
    </java-types>
    <java-types>
        <java-type name="SubscriptionImpl" super-type="java.lang.Object"/>
    </java-types>

</xml-bindings>
使用的maven依赖项:

<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>eclipselink</artifactId>
    <version>2.5.2</version>
</dependency>
“实体”接口与其他类位于不同的包中。
非常感谢您的指点。

eclipselink解析器中有一个bug,因为workarround将jaxb.properties与内容一起使用

javax.xml.bind.context.factory=com.sun.xml.internal.bind.v2.ContextFactory

jaxb.properties必须位于与序列化的类相同的包中的类路径中


另一个解决方法是使用eclipselink jaxb实现的2.6.0版

,因为我无法在有限的时间内解决这个问题,所以我最终使用了Castor。为我们的用例计算。
Exception Description: The java interface com.domain.Entity can not be mapped by JAXB as it has multiple mappable parent interfaces. Multiple inheritence is not supported]
<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>eclipselink</artifactId>
    <version>2.5.2</version>
</dependency>