Как использовать @XmlIDREF и @XmlID - PullRequest
0 голосов
/ 30 мая 2019

Я не совсем понимаю, как @XmlIDREF и @XmlID работают вместе. Используя XmlIDREF, я только создаю ссылку на фактический элемент. Однако, каков вариант использования для XmlID.

Я хочу создать ссылку на класс Publication. Достаточно ли аннотировать список публикаций с помощью @XmlIDREF?

public class Author {

    private String id;
    private String name;
    private List<Publication> publications = new LinkedList<>();

    public Author() {
        super();
    }
    @XmlElement
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @XmlElement
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
    @XmlIDREF
    public List<Publication> getPublications() {
        return publications;
    }

1 Ответ

0 голосов
/ 31 мая 2019

Я хочу создать ссылку на класс Publication. Достаточно ли комментировать Список публикаций с помощью @XmlIDREF?

Нет, это только половина того, что вам нужно.

  • У вас уже есть это: С помощью @XmlIDREF вы отмечаете ссылку на сторону отношения (указывая от Author до Publication).

    public class Author {
    
        ...
    
        @XmlIDREF
        @XmlElement(name = "publication")
        public List<Publication> getPublications() {
            return publications;
        }
    
        ...
    
    }
    
  • Вам также необходимо отметить сторону , на которую ссылаются (сама Publication) пометив одно из его свойств с помощью @XmlID, например, так:

    public class Publication {
    
        ...
    
        @XmlID
        @XmlElement
        public String getId() {
            return id;
        }
    
        ...
    }
    

Затем вы можете обрабатывать содержимое XML, как в следующем примере:

<root>
    <publication>
       <id>p-101</id>
       <title>Death on the Nile</title>
    </publication> 
    <publication>
       <id>p-102</id>
       <title>The murder of Roger Ackroyd</title>
    </publication> 
    ...
    <author>
       <id>a-42</id>
       <name>Agatha Christie</name>
       <publication>p-101</publication>
       <publication>p-102</publication>
    </author>
    ...
</root>

Видите ли, ссылки на XML (например, <publication>p-101</publication>) отображаются на ссылки на объекты Java (в List<Publication> publications).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...