Можно ли использовать @XmlInverseReference, если объект и свойство имеют одинаковый тип? - PullRequest
2 голосов
/ 18 октября 2011

Я использую реализацию MOXy JAXB и довольно широко использую аннотацию @XmlInverseReference. Однако недавно я столкнулся со сценарием, в котором этот подход, похоже, не работает. Если у меня есть класс, содержащий поле со свойством того же типа, что и родительский класс, применение @XmlInverseReference, похоже, полностью подавляет сортировку этого свойства. Пропуск аннотации дает предсказуемое исключение StackoverflowException.

Кто-нибудь сталкивался с этой проблемой и нашел эффективное решение с помощью MOXy?

Быстрый образец оскорбительного класса:

public class Person {

  private Long id;
  private Person spouse;

  public Long getId() {
    return id;
  }

  public void setId(Long id) {
    this.id = id;
  }

  @XmlInverseReference(mappedBy="spouse")
  public Person getSpouse() {
    return spouse;
  }

  public Person setSpouse(Person spouse) {
    this.spouse = spouse;
  }

}

1 Ответ

2 голосов
/ 18 октября 2011

EclipseLink MOXy @XmlInverseReference можно использовать, когда объект и свойство относятся к одному типу.В настоящее время проблема этого варианта использования заключается в том, что одно и то же свойство необходимо использовать для обоих направлений отношений.

Что вы видите

Когда свойство аннотировано@XmlInverseReference, для сортировки MOXy будет рассматривать это свойство как @XmlTransient.

Запрос на улучшение

Я ввел следующий запрос на улучшение для поддержки этого типа поведения.Пожалуйста, добавьте любые дополнительные детали, которые вы считаете уместными.

Для получения дополнительной информации о @XmlInverseReference

...